From 2ae48afb99a8ad54719fd4e8d2214cde8556bd64 Mon Sep 17 00:00:00 2001 From: panFD Date: Fri, 31 Jul 2026 20:53:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor(MissionCard):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=9F=B3=E6=95=B0=E9=87=8F=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 调整注释描述,将装备数量改为刷新石数量 2. 新增刷新石数量变化动画播放逻辑 3. 重构刷新石数量变更事件处理方法,支持传递变化数值并触发动画 --- assets/script/game/map/MissionCardComp.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/assets/script/game/map/MissionCardComp.ts b/assets/script/game/map/MissionCardComp.ts index ca61b3f8..372c3ec1 100644 --- a/assets/script/game/map/MissionCardComp.ts +++ b/assets/script/game/map/MissionCardComp.ts @@ -156,9 +156,9 @@ export class MissionCardComp extends CCComp { /** 英雄数量显示节点(含 icon + num 子节点) */ @property(Node) hero_num_node: Node = null! - /** 装备数量显示节点(含 icon + num 子节点) */ + /** 刷新石数量显示节点(含 icon + num 子节点) */ @property(Node) - refresh_stone_num_node: Node = null! + refresh_stone_num_node: Node = null! // ======================== 运行时状态 ======================== @@ -433,9 +433,14 @@ export class MissionCardComp extends CCComp { } } - /** 刷新石数量变更:刷新刷新按钮的可用状态与费用显示 */ - private onRefreshStone() { + /** 刷新石数量变更:刷新刷新按钮状态/费用显示,并播放数量变化动画 */ + private onRefreshStone(event: string, args: any) { + const payload = args ?? event; + const v = typeof payload === 'number' ? payload : (payload?.delta ?? payload?.value ?? 0); this.updateDrawCostUI(); + if (v !== 0) { + this.playRefreshStoneChangeAnim(v > 0); + } } /** 战斗开始:保留卡牌面板,允许玩家在战斗阶段继续抽卡和召唤英雄 */ @@ -1756,6 +1761,16 @@ export class MissionCardComp extends CCComp { this.playHeroNumNodePop(num, peak); } + /** 刷新石计数变化动画(与金币一致的 icon+num 弹跳) */ + private playRefreshStoneChangeAnim(isIncrease: boolean) { + if (!this.refresh_stone_num_node || !this.refresh_stone_num_node.isValid) return; + const peak = isIncrease ? 1.2 : 1.2; + const icon = this.refresh_stone_num_node.getChildByName("icon"); + if (icon && icon.isValid) this.playHeroNumNodePop(icon, peak); + const num = this.refresh_stone_num_node.getChildByName("num"); + if (num && num.isValid) this.playHeroNumNodePop(num, peak); + } + public setHeroMaxCount(max: number) { const missionData = this.getMissionData(); if (!missionData) return;