From 37921583eafff4a9cbad44c096dba516a1229d1f Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 05 三月 2024 17:23:01 +0800
Subject: [PATCH] #
---
zy-asrs-flow/src/pages/map/player.js | 24 ++++++++++++++++--------
zy-asrs-flow/src/pages/map/utils.js | 18 ++++++++++++++++++
2 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/zy-asrs-flow/src/pages/map/player.js b/zy-asrs-flow/src/pages/map/player.js
index 9f3cbee..f9743f0 100644
--- a/zy-asrs-flow/src/pages/map/player.js
+++ b/zy-asrs-flow/src/pages/map/player.js
@@ -6,7 +6,7 @@
constructor(dom, dark, didClickSprite) {
this.darkModel = dark;
- this.didClickSprite = didClickSprite;
+ this.didClickSprite = didClickSprite; // not dynamic
// init
this.app = generatePixiApp(dark);
dom.appendChild(this.app.view);
@@ -59,6 +59,12 @@
}
mapSelect = (event) => {
+ if (this.selectedSprites && this.selectedSprites.length > 0) {
+ this.selectedSprites.forEach(child => {
+ Utils.unMarkSprite(child);
+ })
+ }
+ this.selectedSprites = [];
let isSelecting = false;
const selectionBox = new PIXI.Graphics();
@@ -93,16 +99,18 @@
this.app.view.addEventListener('mouseup', (event) => {
if (isSelecting) {
+
+ this.mapContainer.children.forEach(child => {
+ if (Utils.isSpriteInSelectionBox(child, selectionBox)) {
+ this.selectedSprites.push(child);
+ Utils.markSprite(child);
+ }
+ })
+
isSelecting = false;
selectionBox.clear();
- // const selectedSprites = this.mapContainer.children.filter(sprite => {
- // const spriteBounds = sprite.getBounds();
- // const boxBounds = new PIXI.Rectangle(Math.min(selectionStart.x, event.clientX), Math.min(selectionStart.y, event.clientY), Math.abs(event.clientX - selectionStart.x), Math.abs(event.clientY - selectionStart.y));
- // return spriteBounds.contains(boxBounds.x, boxBounds.y) && spriteBounds.contains(boxBounds.x + boxBounds.width, boxBounds.y + boxBounds.height);
- // });
-
- // console.log('Selected Sprites:', selectedSprites);
+ console.log('Selected Sprites:', this.selectedSprites);
}
this.app.view.removeEventListener('mousemove', handleMouseMove);
diff --git a/zy-asrs-flow/src/pages/map/utils.js b/zy-asrs-flow/src/pages/map/utils.js
index ace7582..c7bb455 100644
--- a/zy-asrs-flow/src/pages/map/utils.js
+++ b/zy-asrs-flow/src/pages/map/utils.js
@@ -64,4 +64,22 @@
}
}
+}
+
+export const isSpriteInSelectionBox = (sprite, selectionBox) => {
+ const spriteBounds = sprite.getBounds();
+ const boxBounds = selectionBox.getBounds();
+
+ return spriteBounds.x + spriteBounds.width > boxBounds.x
+ && spriteBounds.x < boxBounds.x + boxBounds.width
+ && spriteBounds.y + spriteBounds.height > boxBounds.y
+ && spriteBounds.y < boxBounds.y + boxBounds.height;
+}
+
+export const markSprite = (sprite) => {
+ sprite.alpha = 0.5;
+}
+
+export const unMarkSprite = (sprite) => {
+ sprite.alpha = 1;
}
\ No newline at end of file
--
Gitblit v1.9.1