结算界面、功能解锁界面dotween代码优化

This commit is contained in:
Fang 2023-06-06 10:13:50 +08:00
parent eb1281f999
commit 2df5f6a66c
3 changed files with 63 additions and 46 deletions

View File

@ -1,6 +1,7 @@
local BattleResultUI = class("BattleResultUI", BaseUI) local BattleResultUI = class("BattleResultUI", BaseUI)
local UNIT_RESULT_RERPORT_CELL = "app/ui/battle/cell/unit_result_report_cell" local UNIT_RESULT_RERPORT_CELL = "app/ui/battle/cell/unit_result_report_cell"
local MAX_SCROLL_SHOW_COUNT = 10
function BattleResultUI:getPrefabPath() function BattleResultUI:getPrefabPath()
return "assets/prefabs/ui/battle/battle_result_ui.prefab" return "assets/prefabs/ui/battle/battle_result_ui.prefab"
@ -24,6 +25,17 @@ function BattleResultUI:onClose()
if self.sliderSequence then if self.sliderSequence then
self.sliderSequence:Kill() self.sliderSequence:Kill()
end end
if self.animUnit then
self.animUnit:Kill()
end
if self.animPig then
self.animPig:Kill()
end
if self.animRewards then
for idx, anim in pairs(self.animRewards) do
anim:Kill()
end
end
end end
function BattleResultUI:onLoadRootComplete() function BattleResultUI:onLoadRootComplete()
@ -119,7 +131,6 @@ function BattleResultUI:refreshUnitNodeAnim(parent)
uiMap["battle_result_ui.unit_node"]:setParent(parent, true) uiMap["battle_result_ui.unit_node"]:setParent(parent, true)
local canvasNodeUnit = parent:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP) local canvasNodeUnit = parent:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP)
if self.animUnit == nil then
self.animUnit = self.root:createBindTweenSequence() self.animUnit = self.root:createBindTweenSequence()
self.animUnit:Insert(0, canvasNodeUnit:DOFade(0, 0)) self.animUnit:Insert(0, canvasNodeUnit:DOFade(0, 0))
self.animUnit:Insert(0.1, canvasNodeUnit:DOFade(1, 0)) self.animUnit:Insert(0.1, canvasNodeUnit:DOFade(1, 0))
@ -127,10 +138,9 @@ function BattleResultUI:refreshUnitNodeAnim(parent)
self.animUnit:Insert(0.1, parent:getTransform():DOScale(0.35, 0)) self.animUnit:Insert(0.1, parent:getTransform():DOScale(0.35, 0))
self.animUnit:Insert(0.13, parent:getTransform():DOScale(1.1, 0.16)) self.animUnit:Insert(0.13, parent:getTransform():DOScale(1.1, 0.16))
self.animUnit:Insert(0.26, parent:getTransform():DOScale(1, 0.14)) self.animUnit:Insert(0.26, parent:getTransform():DOScale(1, 0.14))
self.animUnit:SetAutoKill(false) self.animUnit:OnComplete(function()
else self.animUnit = nil
self.animUnit:Restart() end)
end
end end
function BattleResultUI:refreshRewards() function BattleResultUI:refreshRewards()
@ -139,6 +149,7 @@ function BattleResultUI:refreshRewards()
return return
end end
self.animRewards = {}
local uiMap = self.root:genAllChildren() local uiMap = self.root:genAllChildren()
self.rewardNode = uiMap["battle_result_ui.reward_node"] self.rewardNode = uiMap["battle_result_ui.reward_node"]
self.rewardNode:setVisible(true) self.rewardNode:setVisible(true)
@ -149,13 +160,15 @@ function BattleResultUI:refreshRewards()
end) end)
self.scrollRectComp:addRefreshCallback(function(index, cell) self.scrollRectComp:addRefreshCallback(function(index, cell)
cell:refresh(self.rewards[index]) cell:refresh(self.rewards[index])
cell:showAppearAnim(index) if index <= MAX_SCROLL_SHOW_COUNT and self.animRewards[index] == nil then
self.animRewards[index] = self:showRewardAppearAnim(index, cell)
end
cell:showRightUpIcon(index <= self.mysteryBoxIdx, GConst.ATLAS_PATH.COMMON, "common_chest_1") cell:showRightUpIcon(index <= self.mysteryBoxIdx, GConst.ATLAS_PATH.COMMON, "common_chest_1")
end) end)
self.scrollRectComp:setFadeArgs(0.05, 0.3) self.scrollRectComp:setFadeArgs(0.05, 0.3)
self.scrollRectComp:clearCells() self.scrollRectComp:clearCells()
local rewardCount = #self.rewards local rewardCount = #self.rewards
if rewardCount > 10 then if rewardCount > MAX_SCROLL_SHOW_COUNT then
local comp = scrollRect:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT) local comp = scrollRect:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT)
comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic
self.scrollRectComp:setPerLineNum(5) self.scrollRectComp:setPerLineNum(5)
@ -224,17 +237,19 @@ function BattleResultUI:tryShowGoldPig()
if lastGemCount > currGemCount then if lastGemCount > currGemCount then
lastGemCount = currGemCount lastGemCount = currGemCount
end end
if self.animPig == nil then
self.animPig = self.root:createBindTweenSequence() self.animPig = self.root:createBindTweenSequence()
self.animPig:Insert(0, self.canvasGroupPigGem:DOFade(0, 0)) self.animPig:Insert(0, self.canvasGroupPigGem:DOFade(0, 0))
self.animPig:Insert(1.5, self.canvasGroupPigGem:DOFade(1, 0.3)) self.animPig:Insert(1.5, self.canvasGroupPigGem:DOFade(1, 0.3))
self.animPig:SetAutoKill(false) self.animPig:SetAutoKill(false)
else self.animPig:OnComplete(function()
self.animPig:Restart() self.animPig = nil
end end)
self.goldPigSpine:playAnimComplete("idle1", false, false, function() self.goldPigSpine:playAnimComplete("idle1", false, false, function()
self.goldPigSpine:playAnim("idle2", true, false) self.goldPigSpine:playAnim("idle2", true, false)
end) end)
self.goldPigGemTx:setText("+" .. currGemCount - lastGemCount) self.goldPigGemTx:setText("+" .. currGemCount - lastGemCount)
GFunc.centerImgAndTx(self.goldPigGemImg, self.goldPigGemTx, 0, -4) GFunc.centerImgAndTx(self.goldPigGemImg, self.goldPigGemTx, 0, -4)
if currGemCount > lastGemCount then if currGemCount > lastGemCount then
@ -266,4 +281,23 @@ function BattleResultUI:tryShowGoldPig()
return true return true
end end
-- 展示结算奖励的出现动画
function BattleResultUI:showRewardAppearAnim(idx, cell)
local canvasGroup = cell.baseObject:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP)
local selfObj = cell.baseObject
local delay = (idx - 1) * 0.05
local scaleX = selfObj:fastGetLocalScale()
local animRewardAppear = selfObj:createBindTweenSequence()
animRewardAppear:Insert(0, canvasGroup:DOFade(0, 0))
animRewardAppear:Insert(0, selfObj:getTransform():DOScale(scaleX * 0.6, 0))
animRewardAppear:Insert(0.3 + delay, selfObj:getTransform():DOScale(scaleX * 1.1, 0.1))
animRewardAppear:Insert(0.3 + delay, canvasGroup:DOFade(1, 0.1))
animRewardAppear:Insert(0.4 + delay, selfObj:getTransform():DOScale(scaleX * 1, 0.13))
animRewardAppear:OnComplete(function()
animRewardAppear = nil
end)
return animRewardAppear
end
return BattleResultUI return BattleResultUI

View File

@ -20,7 +20,6 @@ function RewardCell:init()
ModuleManager.TipsManager:showRewardTips(self.rewardId, self.rewardType, self.baseObject) ModuleManager.TipsManager:showRewardTips(self.rewardId, self.rewardType, self.baseObject)
end end
end) end)
self.canvasGroup = self.baseObject:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP)
end end
function RewardCell:refresh(reward) function RewardCell:refresh(reward)
@ -156,24 +155,4 @@ function RewardCell:showRightUpIcon(show, atlas, iconName)
self.rightUpIcon:setSprite(atlas, iconName) self.rightUpIcon:setSprite(atlas, iconName)
end end
-- 展示结算奖励的出现动画
function RewardCell:showAppearAnim(idx)
local selfObj = self.baseObject
local delay = (idx - 1) * 0.05
local scaleX = self.baseObject:fastGetLocalScale()
if self.animAppear == nil then
self.animAppear = selfObj:createBindTweenSequence()
self.animAppear:Insert(0, self.canvasGroup:DOFade(0, 0))
self.animAppear:Insert(0, selfObj:getTransform():DOScale(scaleX * 0.6, 0))
self.animAppear:Insert(0.3 + delay, selfObj:getTransform():DOScale(scaleX * 1.1, 0.1))
self.animAppear:Insert(0.3 + delay, self.canvasGroup:DOFade(1, 0.1))
self.animAppear:Insert(0.4 + delay, selfObj:getTransform():DOScale(scaleX * 1, 0.13))
self.animAppear:SetAutoKill(false)
else
self.animAppear:Restart()
end
end
return RewardCell return RewardCell

View File

@ -9,9 +9,13 @@ function ModuleUnlockUI:isFullScreen()
end end
function ModuleUnlockUI:onClose() function ModuleUnlockUI:onClose()
if self.unlockAnimationSeq then if self.animAppear then
self.unlockAnimationSeq:Kill() self.animAppear:Kill()
self.unlockAnimationSeq = nil self.animAppear = nil
end
if self.animVanish then
self.animVanish:Kill()
self.animVanish = nil
end end
end end