From 80e5ee8049eefe7039d77048f43e6e0566a07953 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 25 三月 2024 09:10:43 +0800
Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack
---
zy-asrs-flow/src/pages/map/player.js | 45 +++++++++++++++++++++++++++------------------
1 files changed, 27 insertions(+), 18 deletions(-)
diff --git a/zy-asrs-flow/src/pages/map/player.js b/zy-asrs-flow/src/pages/map/player.js
index 7b6bbcf..17eb4df 100644
--- a/zy-asrs-flow/src/pages/map/player.js
+++ b/zy-asrs-flow/src/pages/map/player.js
@@ -5,10 +5,9 @@
export default class Player {
- constructor(dom, dark, didClickSprite) {
+ constructor(dom, dark) {
// not dynamic
this.darkModel = dark;
- this.didClickSprite = didClickSprite;
// init
this.app = generatePixiApp(dark);
dom.appendChild(this.app.view);
@@ -18,14 +17,13 @@
this.mapContainer = generatePixiContainer('mapContainer');
this.app.stage.addChild(this.mapContainer);
- // this.activateMapEvent(null);
this.activateMapScale();
this.activateMapPan();
this.showCoordinates();
this.getStartedTicker();
}
- activateMapEvent = (eventType, mapModel) => {
+ activateMapEvent = (eventType, fn) => {
if (this.mapEvent) {
this.mapContainer.parent.off('mousedown');
this.mapEvent = null;
@@ -39,7 +37,7 @@
if (eventType && event.button === 0) {
switch (eventType) {
case Utils.MapEvent.SELECTION_BOX:
- this.mapSelect(event, mapModel);
+ this.mapSelect(event, fn);
break
default:
break
@@ -49,7 +47,7 @@
this.mapContainer.parent.on('mousedown', this.mapEvent)
}
- mapSelect = (event, mapModel) => {
+ mapSelect = (event, fn) => {
let isSelecting = false;
if (!this.selectionBox) {
this.selectionBox = new PIXI.Graphics();
@@ -61,10 +59,22 @@
this.app.renderer.events.mapPositionToPoint(startPoint, event.clientX, event.clientY);
let selectionStart = { x: startPoint.x, y: startPoint.y };
- isSelecting = true;
+ // avoid trigger sprite event
+ let hasHitSprite = false;
+ for (let child of this.mapContainer.children) {
+ if (child.data?.uuid) {
+ if (child.getBounds().contains(selectionStart.x, selectionStart.y)) {
+ hasHitSprite = true; break;
+ }
+ }
+ }
+
+ if (!hasHitSprite) {
+ isSelecting = true;
+ }
const handleMouseMove = (event) => {
- if (isSelecting && !this.didClickSprite) {
+ if (isSelecting) {
// select end pos
const endPoint = new PIXI.Point();
this.app.renderer.events.mapPositionToPoint(endPoint, event.clientX, event.clientY);
@@ -85,7 +95,6 @@
this.mapContainer.parent.on('mouseup', (event) => {
if (isSelecting) {
- // sprite show style which be selected
if (this.selectedSprites && this.selectedSprites.length > 0) {
this.selectedSprites.forEach(child => {
Utils.unMarkSprite(child);
@@ -93,6 +102,7 @@
}
this.selectedSprites = [];
+ // sprite show style which be selected
this.mapContainer.children.forEach(child => {
if (Utils.isSpriteInSelectionBox(child, this.selectionBox)) {
this.selectedSprites.push(child);
@@ -102,11 +112,14 @@
isSelecting = false;
this.selectionBox.clear();
- console.log(mapModel);
- // sprites batch move
- Utils.spriteListBeMovable(this.selectedSprites, this.scale, () => {
- this.activateMapEvent(Utils.MapEvent.SELECTION_BOX);
- });
+ // after selectbox complete
+ if (fn) {
+ fn(this.selectedSprites, () => {
+ // trigger at end of selectionBox when fn happen mouseup
+ this.selectedSprites = [];
+ this.activateMapEvent(Utils.MapEvent.SELECTION_BOX, fn);
+ });
+ }
}
@@ -363,10 +376,6 @@
x: this.app.renderer.width / 2 - centerPoint.x * this.scale,
y: this.app.renderer.height / 2 - centerPoint.y * this.scale
}, 200).start();
- }
-
- updateDidClickSprite = (value) => {
- this.didClickSprite = value;
}
getStartedTicker = () => {
--
Gitblit v1.9.1