cocos2dx 的 Repeat 函数的一种等效用法(lua 接口)

引子

在使用多个 cc.RotateBy 来创建连续的旋转动画时,发现 Repeat 函数调用后,传入的参数是 3,却跑了 4 次。传 6 跑 7。传 9 跑 9。函数表现得比较奇怪,一时源码中又看不出 bug 所在。于是想到了利用 Sequence 做一个等效实现。

实现办法

local r = cc.RotateBy:create(0.1, 60)
local xs = {
  r:clone(),
  r:clone(),
  r:clone(),
  r:clone(),
  r:clone(),
  r:clone(),
}
local s = cc.Sequence:create(table.unpack(xs))
self.cursor:runAction(s)

主要利用 unpack 来传参了。另外,数组生成的地方可考虑用 for 循环。

参考

  • Roope的Cocos2d-x学习之旅 003:无限重复和有限重复动作——RepeatForever和Repeat
  • cocos2dx的runAction: 重复执行,多个动作连接执行,多个动作同时执行的实现
  • cocos2dx多个精灵调用runAction()方法执行组合动作,只有最后一个精灵有效的问题

你可能感兴趣的:(游戏开发,Lua,Cocos2d-x)