cocos2d-x+lua,动画结束的回调方法中initLayer,动画会卡顿一下,求救!!

local moveTo=CCMoveTo:create(0.3,CCPointMake(G_VisibleSize.width/2,G_VisibleSize.height/2))

local function callBack()
self:init()
end

local callFunc=CCCallFunc:create(callBack)
local acArr = CCArray:create()
acArr:addObject(moveTo)
acArr:addObject(callFunc)
local seq=CCSequence:create(acArr)

self.bgLayer:runAction(seq)

这个bgLayer是点击按钮弹出的界面,从下方飞出来,但是马上移动到位置的时候会卡顿一下,测试了,代码运行顺序没问题,self:init()里面没有发数据包,就是往里面加各种精灵和label什么的,有大神知道为什么会卡顿么?先谢谢了!

可能是init执行的东西太多了 比如渲染的东西 过多或者过大

确实特别多,还加了个tableview。不过好诡异啊,明明是动画结束后的回调,可动画还没结束,就已经开始为渲染init做准备了?这算是引擎的不足么?

迷惑,我用的是itouch测试机,可能渲染有点慢,所以会出现卡顿?

我觉得init不太好优化。。修改量太大了,有没有好的办法提升用户体验,让用户看不到卡顿就可以了

你可以再延迟一帧 再执行init 或者把init的东西分timer加载

local callFunc=CCCallFunc:create(callBack)
local acArr = CCArray:create()
acArr:addObject(moveTo)
acArr:addObject(CCDelay:create(0.02))
acArr:addObject(callFunc)

local seq=CCSequence:create(acArr)

之类的0.02自己调

试过delayTime了,0.05都不好使,0.1的话偶尔好使,但是太影响体验了:6: