From 7a3a3921fbe7a1c7c6e192ccbc49abe4e45ab0f2 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 19 十月 2024 10:41:09 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/map/tool.js |  108 +++++-------------------------------------------------
 1 files changed, 10 insertions(+), 98 deletions(-)

diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 8f942a9..ca422a7 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -20,7 +20,7 @@
 import ctuLoadedFullBattery from '/map/agv/ctuLoadedFullBattery.svg';
 
 let app, mapContainer, themeMode;
-let selectedSprite, effectTick, effectHalfCircle, effectRectangle;
+let selectedSprite, effectCircle, effectTicker;
 
 export function getApp() {
     return app;
@@ -330,124 +330,37 @@
     }
 }
 
-
-// export const showSelectedEffect = (sprite) => {
-//     if (!sprite?.texture || !sprite?.texture?.valid) {
-//         return;
-//     }
-//     const { width, height } = sprite;
-//     const scale = sprite.scale.x;
-//     const sideLen = (Math.max(width, height) + 10) * scale;
-//     const color = themeMode === 'light' ? 0x273c75 : 0xffffff;
-
-//     effectHalfCircle = new PIXI.Graphics();
-//     effectHalfCircle.beginFill(color);
-//     effectHalfCircle.lineStyle(2 * scale, color);
-//     effectHalfCircle.arc(0, 0, sideLen, 0, Math.PI);
-//     effectHalfCircle.endFill();
-//     effectHalfCircle.position.set(sprite.x, sprite.y);
-//     effectHalfCircle.scale.set(1 / scale);
-//     effectHalfCircle.zIndex = 9999;
-
-//     effectRectangle = new PIXI.Graphics();
-//     effectRectangle.lineStyle(5 * scale, color, 1);
-//     effectRectangle.drawRoundedRect(0, 0, sideLen, sideLen, 16 * scale);
-//     effectRectangle.endFill();
-//     effectRectangle.mask = effectHalfCircle;
-//     effectRectangle.zIndex = 9999;
-
-//     const scaledWidth = sideLen * (1 / scale);
-//     const scaledHeight = sideLen * (1 / scale);
-
-//     effectRectangle.scale.set(1 / scale);
-//     effectRectangle.position.set(sprite.x - scaledWidth / 2, sprite.y - scaledHeight / 2);
-
-//     mapContainer.addChild(effectRectangle);
-//     mapContainer.addChild(effectHalfCircle);
-
-//     selectedSprite = sprite;
-
-//     let phase = 0;
-//     effectTick = (delta) => {
-//         phase += delta / 10;
-//         phase %= (Math.PI * 2);
-//         if (effectHalfCircle) {
-//             effectHalfCircle.rotation = phase;
-//         }
-//     };
-
-//     app.ticker.add(effectTick);
-// }
-
-// export const removeSelectedEffect = () => {
-//     if (effectTick) {
-//         app.ticker.remove(effectTick);
-//     }
-//     if (effectHalfCircle) {
-//         mapContainer.removeChild(effectHalfCircle);
-//         effectHalfCircle = null;
-//     }
-//     if (effectRectangle) {
-//         mapContainer.removeChild(effectRectangle);
-//         effectRectangle = null;
-//     }
-//     selectedSprite = null;
-// }
-
-// export const updateEffect = (sprite) => {
-//     if (!sprite || sprite !== selectedSprite || !effectRectangle || !effectHalfCircle) {
-//         return
-//     }
-//     const { width, height } = sprite;
-//     const scale = sprite?.scale.x;
-//     const sideLen = (Math.max(width, height) + 10) * scale;
-//     const scaledWidth = sideLen * (1 / scale);
-//     const scaledHeight = sideLen * (1 / scale);
-
-//     effectRectangle.position.set(sprite.x - scaledWidth / 2, sprite.y - scaledHeight / 2);
-
-//     effectHalfCircle.position.set(sprite.x, sprite.y);
-// }
-
-let effectCircle = null;
-let effectTicker = null;
-
 export const showSelectedEffect = (sprite) => {
     if (!sprite?.texture || !sprite?.texture?.valid) {
         return;
     }
 
-    // 濡傛灉宸茬粡鏈夌壒鏁堬紝鍏堢Щ闄�
-    removeSelectedEffect();
-
     const { width, height } = sprite;
-    const scale = sprite.scale.x;
     const maxDimension = Math.max(width, height);
-    const radius = (maxDimension / 2) * scale * 1.2; // 鏀惧ぇ1.2鍊嶏紝浣垮渾绋嶅ぇ浜巗prite
+    const radius = (maxDimension / 2) + maxDimension / 5;
 
-    const color = themeMode === 'light' ? 0x273c75 : 0xffffff;
+    const color = themeMode === 'light' ? 0x2f68ac : 0xffffff;
+    const alpha = .5;
 
-    // 鍒涘缓鍦嗗舰鐗规晥
     effectCircle = new PIXI.Graphics();
-    effectCircle.lineStyle(2 * scale, color, 1);
+    effectCircle.beginFill(color, alpha);
     effectCircle.drawCircle(0, 0, radius);
     effectCircle.endFill();
     effectCircle.position.set(sprite.x, sprite.y);
-    effectCircle.zIndex = sprite.zIndex - 1; // 纭繚涓嶉伄鎸prite
+    effectCircle.zIndex = -1;
+    effectCircle.blendMode = PIXI.BLEND_MODES.NORMAL;
 
-    // 灏嗙壒鏁堟坊鍔犲埌瀹瑰櫒涓�
     mapContainer.addChild(effectCircle);
 
     selectedSprite = sprite;
 
-    // 瀹炵幇鑴夊啿鏁堟灉
     let pulseScale = 1;
     let scalingUp = true;
     effectTicker = (delta) => {
-        const pulseSpeed = 0.005 * delta;
+        const pulseSpeed = 0.003 * delta;
         if (scalingUp) {
             pulseScale += pulseSpeed;
-            if (pulseScale >= 1.2) {
+            if (pulseScale >= 1.1) {
                 scalingUp = false;
             }
         } else {
@@ -457,8 +370,7 @@
             }
         }
         effectCircle.scale.set(pulseScale);
-        // 濮嬬粓璺熼殢sprite鐨勪綅缃�
-        effectCircle.position.set(selectedSprite.x, selectedSprite.y);
+        effectCircle.position.set(sprite.x, sprite.y);
     };
 
     app.ticker.add(effectTicker);

--
Gitblit v1.9.1