加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 19:11:54 所属栏目:百科 来源:网络整理
导读: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"

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,3)

再次执行,结果居然是执行了4次!!

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读