From ea3fe2cd0f98a8f16274981795dfeba1edc4d3ea Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 05 三月 2024 20:30:19 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/pages/map/player.js |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 zy-asrs-flow/src/pages/map/utils.js  |    1 +
 2 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/zy-asrs-flow/src/pages/map/player.js b/zy-asrs-flow/src/pages/map/player.js
index f688b42..711a73a 100644
--- a/zy-asrs-flow/src/pages/map/player.js
+++ b/zy-asrs-flow/src/pages/map/player.js
@@ -30,6 +30,7 @@
     activateMapEvent = (leftEvent, rightEvent) => {
         if (this.mapEvent) {
             this.mapContainer.parent.off('mousedown', this.mapEvent);
+            this.mapEvent = null;
         }
         this.mapEvent = (event) => {
             // left
@@ -104,6 +105,52 @@
                 isSelecting = false;
                 selectionBox.clear();
 
+
+                // batch move
+                if (this.selectedSprites && this.selectedSprites.length > 0) {
+                    this.batchMove = false;
+
+                    const batchMoving = (event) => {
+                        if (this.batchMove) {
+                            var mouseMovement = { x: event.global.x - this.batchMoveStartPos.x, y: event.global.y - this.batchMoveStartPos.y };
+                            for (let sprite of this.selectedSprites) {
+                                sprite.position.x = sprite.data.batchMoveStartPos.x + mouseMovement.x;
+                                sprite.position.y = sprite.data.batchMoveStartPos.y + mouseMovement.y;
+                            }
+                        }
+                    }
+
+                    const batchMoveEnd = (event) => {
+                        this.selectedSprites.forEach(child => {
+                            Utils.unMarkSprite(child);
+                        })
+                        this.selectedSprites = [];
+                        this.mapContainer.parent.off('mousedown');
+                        this.mapContainer.parent.off('mousemove');
+
+                        this.activateMapEvent(Utils.MapEvent.SELECTION_BOX);
+                    }
+
+                    const batchMoveStart = (event) => {
+                        this.batchMoveStartPos = { x: event.data.global.clone().x, y: event.data.global.clone().y };
+                        this.selectedSprites.forEach(child => {
+                            child.data.batchMoveStartPos = { x: child.position.x, y: child.position.y };
+                        })
+
+                        this.batchMove = true;
+                        this.mapContainer.parent.off('mousemove');
+                        this.mapContainer.parent.on('mousemove', batchMoving);
+
+                        this.mapContainer.parent.off('mouseup');
+                        this.mapContainer.parent.on('mouseup', batchMoveEnd);
+                    }
+
+                    this.mapContainer.parent.off('mousedown')
+                    this.mapContainer.parent.on('mousedown', batchMoveStart);
+                }
+
+
+
             }
 
             this.mapContainer.parent.off('mousemove', handleMouseMove);
diff --git a/zy-asrs-flow/src/pages/map/utils.js b/zy-asrs-flow/src/pages/map/utils.js
index 902c76b..bef2076 100644
--- a/zy-asrs-flow/src/pages/map/utils.js
+++ b/zy-asrs-flow/src/pages/map/utils.js
@@ -28,6 +28,7 @@
     sprite.anchor.set(0.5);
     sprite.cursor = 'pointer';
     sprite.eventMode = 'static';
+    sprite.data = {};
 }
 
 export const beMovable = (sprite, setDidClickSprite) => {

--
Gitblit v1.9.1