优化Animation 性能
This commit is contained in:
parent
7b53180344
commit
3c73480642
|
|
@ -11,10 +11,14 @@ class Animation extends Actor {
|
|||
|
||||
//当前帧数
|
||||
CurrentFrameIndex = 0;
|
||||
//总帧数
|
||||
TotalFrameIndex = 0;
|
||||
//当前帧时间
|
||||
CurrentIndexT = 0;
|
||||
//当前帧
|
||||
CurrentFrame = null;
|
||||
//下帧延迟
|
||||
NextFrameDelay = 9999999;
|
||||
//状态机对象(只有存在时才有KeyFlag)
|
||||
StateMachine = null;
|
||||
|
||||
|
|
@ -118,7 +122,6 @@ class Animation extends Actor {
|
|||
Spritebuf.SetPosition(FrameObj.Pos);
|
||||
|
||||
|
||||
|
||||
SpriteArr.append(Spritebuf);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -127,6 +130,8 @@ class Animation extends Actor {
|
|||
|
||||
//初始化完毕 如果是第一次初始化 而非重新构造 设置大小为第0帧大小否则天空 地板等依靠大小的初始化会有问题
|
||||
if (CurrentIndexT == 0) SetSize(SpriteArr[0].GetSize());
|
||||
//记录总帧数
|
||||
TotalFrameIndex = FrameArr.len();
|
||||
}
|
||||
|
||||
//被添加时 要刷新一下当前帧
|
||||
|
|
@ -159,7 +164,9 @@ class Animation extends Actor {
|
|||
CurrentFrame = SpriteArr[CurrentFrameIndex];
|
||||
Addchild(SpriteArr[CurrentFrameIndex]);
|
||||
|
||||
local FlagBuf = FrameArr[CurrentFrameIndex].Flag;
|
||||
local FrameInfo = FrameArr[CurrentFrameIndex];
|
||||
local FlagBuf = FrameInfo.Flag;
|
||||
NextFrameDelay = FrameInfo.Delay;
|
||||
//关键帧
|
||||
if ("SET_FLAG" in FlagBuf) {
|
||||
if (StateMachine && StateMachine.State != -1) StateMachine.ChangeAniKeyFlag(FlagBuf.SET_FLAG);
|
||||
|
|
@ -179,17 +186,16 @@ class Animation extends Actor {
|
|||
|
||||
//override
|
||||
function OnUpdate(dt) {
|
||||
|
||||
//可用性检查
|
||||
if (IsUsability) {
|
||||
//累加当前帧时间
|
||||
CurrentIndexT += dt;
|
||||
|
||||
//当前帧时间 超过 当前帧延迟就需要切换帧了
|
||||
if (CurrentIndexT >= FrameArr[CurrentFrameIndex].Delay) {
|
||||
if (CurrentIndexT >= NextFrameDelay) {
|
||||
CurrentIndexT = 0;
|
||||
//如果当前帧小于总帧数就切换
|
||||
if (CurrentFrameIndex<(FrameArr.len() - 1)) {
|
||||
if (CurrentFrameIndex<(TotalFrameIndex - 1)) {
|
||||
FlushFrame(CurrentFrameIndex + 1);
|
||||
}
|
||||
//说明播放完毕了
|
||||
|
|
@ -206,10 +212,8 @@ class Animation extends Actor {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
base.OnUpdate(dt);
|
||||
//Animation类下只会有精灵 因此不需要对子对象进行更新
|
||||
// base.OnUpdate(dt);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue