因为对状态机不熟,没有采用状态机模式。
暂时游戏进程播放方式。
每个回合
根据时序关系,有很多个播放序列。
setTimeOut 定义 延迟多少,处理。【只是为了解释流程】
攻击过程 (各种技能播放【技能前,技能后,技能中,起始动画,结束动画】,人物放缩,等等)
setTimeOut(attack_do,time1),
setTimeOut(attack_do2,time2),
setTimeOut(attack_do3,time3),
…
setTimeOut(attack_doN,timeN)
移动过程 (移动过程中伴随很多处理,移动特效,人物放缩等等)
setTimeOut(move_do,time1),
setTimeOut(move_do2,time2),
…
setTimeOut(move_doN,timeN)
其他过程N
…N 个
所以一回合,要组织 N个过程 * n个处理的 。
综合表现就是
一个回合
for i , Nn do -----------------------------------建立一个 Nn的 循环组织一些列的延迟,
performWithDelay(function() end , timeN)
end
这样做出来的感觉 怎么说呢, 还是能播,就是没信心确保。
所以询问 廖大,状态机实现。 一定要喷我的实现方式, 让我有足够理由接触 状态机~~~~~
一回合
待机 – 移动 – 攻击 – 移动 – 待机
受伤
闪避
格挡
以下是 我的一个 回合 序列播放 代码:
–播放动画
function FightActionSegment:run()
self.total_duration_consume = 0
local function runAction(progress,actionSprites)
if not actionSprites then return 0 end
local max_duration_consume = 0
for i=1,#actionSprites do
local actionSprite = actionSprites*
actionSprite:run(progress)
local duration_consume = actionSprite:getDurationConsume() + actionSprite:getDelay()
--logger("---------------",duration_consume)
if max_duration_consume < duration_consume then
max_duration_consume = duration_consume
end
end
self.total_duration_consume = self.total_duration_consume + max_duration_consume
return max_duration_consume
end
local progress = 0
progress = progress + runAction(progress,self._appear)
progress = progress + runAction(progress,self._story)
progress = progress + runAction(progress,self._prelude)
progress = progress + runAction(progress,self._skillReady)
progress = progress + runAction(progress,self._skillBuildUp)
progress = progress + runAction(progress,self._preMove)
progress = progress + runAction(progress,self._move)
progress = progress + runAction(progress,self._preAct)
progress = progress + runAction(progress,self._atk)
progress = progress + runAction(progress,self._atkProgress)
progress = progress + runAction(progress,self._def)
progress = progress + runAction(progress,self._def_result)
progress = progress + runAction(progress,self._change_hp)
progress = progress + runAction(progress,self._back)
progress = progress + runAction(progress,self._endAct)
progress = progress + runAction(progress,self._counterattack)
progress = progress + runAction(progress,self._be_counterattacked)
progress = progress + runAction(progress,self._be_counterattacked_change_hp)
progress = progress + runAction(progress,self._after_atk)
progress = progress + runAction(progress,self._before_dead)
progress = progress + runAction(progress,self._dead)
progress = progress + runAction(progress,self._after_dead)
progress = progress + runAction(progress,self._after_all_dead)
--动画播放完成后的回调
if self._onActionEndCallback then
PerformWithDelay(nil,self.total_duration_consume, self._onActionEndCallback)
end
end*