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