cocos2d-x + Lua的cc.Repeat动画执行次数不准,巨坑

Repeat这个Action的本意是可以方便地对某一个动画执行指定的次数,比如这段代码

scene.index           = 0
	--延时
  local delayAction     = cc.DelayTime:create(0.5)
	--回调
  local callFuncAction1 = cc.CallFunc:create(function()
    scene.index = scene.index + 1

    cclog("index: %d",scene.index)
  end)
	--序列
  local sequenceAction  = cc.Sequence:create(delayAction,callFuncAction1)
	--重复
  local repeatAction    = cc.Repeat:create(sequenceAction,2)

  scene.action1         = scene:runAction(repeatAction)

它的执行结果是:

cocos2d: [LUA-print] index: 1 cocos2d: [LUA-print] index: 2 

执行了两次,不错。尝试将次数从2改为3:

local repeatAction    = cc.Repeat:create(sequenceAction,3)

执行结果是:

cocos2d: [LUA-print] index: 1 cocos2d: [LUA-print] index: 2 cocos2d: [LUA-print] index: 3 

嗯,3次,不错。现在,见证奇迹的时刻到了,把delayAction的0.5秒改为0.1秒,保持次数依然为3次不变:

  local delayAction     = cc.DelayTime:create(0.5)
  ...
  local repeatAction    = cc.Repeat:create(sequenceAction,51); font-family:Arial; font-size:14px; line-height:26px"> 再次执行,结果居然是执行了4次!!

cocos2d: [LUA-print] index: 1 cocos2d: [LUA-print] index: 2 cocos2d: [LUA-print] index: 3 cocos2d: [LUA-print] index: 4 

研究许久,无任何结论,巨坑一个,甚至有些情况下在CallFunc内去stopAction都不起作用,简单来说,就是珍爱生命,远离Repeat这个神经病。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...