zy-acs-flow/src/map/MapPage.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/player.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/tool.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
zy-acs-flow/src/map/MapPage.jsx
@@ -76,10 +76,13 @@ switch (mode) { case MapMode.OBSERVER_MODE: setDeviceVisible(false); player.hideGridLines(); break case MapMode.MOVABLE_MODE: player.showGridLines(); break case MapMode.SETTINGS_MODE: player.hideGridLines(); setDeviceVisible(false); break default: @@ -101,9 +104,9 @@ sprite.x = mapX; sprite.y = mapY; // Utils.initSprite(sprite, type); // mapContainer.addChild(sprite); // Utils.beMovable(sprite); Tool.initSprite(sprite, type); mapContainer.addChild(sprite); Tool.beMovable(sprite); }; const actions = [ zy-acs-flow/src/map/player.js
@@ -11,7 +11,7 @@ globalThis.__PIXI_APP__ = this.app; this.mapContainer = generateMapContainer('mapContainer'); this.mapContainer = generatePixiContainer('mapContainer'); const bunny = PIXI.Sprite.from('https://pixijs.com/assets/bunny.png'); bunny.anchor.set(0.5); @@ -21,7 +21,55 @@ this.app.ticker.add((delta) => { bunny.rotation += 0.1 * delta; }); // startupTicker(); } showGridLines = () => { this.hideGridLines(); if (!this.gridLineContainer) { this.gridLineContainer = generatePixiContainer('gridLineContainer'); this.app.stage.addChild(this.gridLineContainer); } const spacing = 30; const lineDefaultAlpha = .1;; const lineDefaultColor = 0x000000; for (let i = 0; i < this.app.view.width / spacing; i++) { const graphics = new PIXI.Graphics(); graphics.lineStyle(1, lineDefaultColor, lineDefaultAlpha); graphics.beginFill(lineDefaultColor); graphics.moveTo(i * spacing, 0); graphics.lineTo(i * spacing, this.app.view.height); graphics.endFill(); this.gridLineContainer.addChild(graphics); } for (let i = 0; i < this.app.view.height / spacing; i++) { const graphics = new PIXI.Graphics(); graphics.lineStyle(1, lineDefaultColor, lineDefaultAlpha); graphics.beginFill(lineDefaultColor); graphics.moveTo(0, i * spacing); graphics.lineTo(this.app.view.width, i * spacing); graphics.endFill(); this.gridLineContainer.addChild(graphics); } } hideGridLines = () => { if (this.gridLineContainer) { this.app.stage.removeChild(this.gridLineContainer); this.gridLineContainer = null; } } // startupTicker = () => { // this.app.ticker.add((delta) => { // TWEEDLE.Group.shared.update(); // }); // } resize(width, height) { this.app.renderer.resize(width, height); @@ -57,7 +105,7 @@ return app; } const generateMapContainer = (name) => { const generatePixiContainer = (name) => { const mapContainer = new PIXI.Container(); mapContainer.sortableChildren = true; mapContainer.name = name; zy-acs-flow/src/map/tool.js
@@ -62,6 +62,57 @@ return sprite; } export const initSprite = (sprite, type) => { sprite.anchor.set(0.5); sprite.cursor = 'pointer'; sprite.eventMode = 'static'; sprite.data = { type: type, uuid: generateID() }; } export const beMovable = (sprite) => { sprite.off('pointerup'); sprite.off('pointermove'); sprite.off('pointerdown'); sprite.off('click'); sprite.on("pointerdown", onDragStart); let dragTarget; function onDragStart(event) { if (event.button === 0) { dragTarget = event.currentTarget; mapContainer.parent.off('pointermove'); mapContainer.parent.on('pointermove', onDragMove, dragTarget); mapContainer.parent.off('pointerup'); mapContainer.parent.on('pointerup', onDragEnd.bind(mapContainer)); } } function onDragMove(event) { if (this) { this.parent.toLocal(event.global, null, this.position); } } function onDragEnd() { if (dragTarget) { this.parent.off('pointermove'); this.parent.off('pointerup'); dragTarget.alpha = 1; dragTarget = null; } } } export const generateID = () => { return Date.now().toString(36) + Math.random().toString(36).substring(2); } export const patchRaLayout = (param) => { const parentElement = document.getElementById('main-content'); if (parentElement && parentElement.classList.contains('RaLayout-content')) {