blu*_*unt 3 iphone animation cocos2d-iphone
在简单的游戏中,角色具有大约15帧的步行动画.基于加速度计的速度在任一方向上都会发生变化.我希望动画相应地加速或减速.我意识到,一旦动画初始化,你就无法改变延迟速度,而是需要创建一个新的动画.但由于速度几乎不断变化,如果我继续重新设置动画,它将始终停留在同一帧上.
有没有办法找到动画当前所在的帧,停止它,然后创建一个具有相同帧的新动画,但从最后一个动画结束开始?
否则,是否有人知道如何实现动态变化的动画延迟时间?
编辑:
我尝试使用CCSpeed从Learn Cocos2d 2中的示例执行此操作.以下是代码:
CCRepeatForever *walkLeftRepeat = [CCRepeatForever actionWithAction:[CCAnimation animationWithSpriteFrames:walkLeftFrames]];
self.walkLeft = [CCSpeed actionWithAction:walkLeftRepeat speed:animationWalkingSpeed];
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:不兼容的指针类型将'CCRepeatForever*'发送到'CCActionInterval*'类型的参数
以下是我关注的示例:
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:rotateBy];
CCSpeed* speedAction = [CCSpeed actionWithAction:repeat speed:0.5f];
Run Code Online (Sandbox Code Playgroud)
第二次编辑:
然后我尝试了这个:
CCAnimation *walkLeftRepeat = [CCAnimation animationWithSpriteFrames:walkLeftFrames];
CCAnimate *temp = [CCAnimate actionWithAnimation:walkLeftRepeat];
CCAnimate*temp2 = [CCRepeatForever actionWithAction:temp];
self.walkLeft = [CCSpeed actionWithAction:temp2 speed:animationWalkingSpeed];
[_guy runAction:_walkLeft];
Run Code Online (Sandbox Code Playgroud)
最后编辑.通过在ccanimation中添加延迟来解决这个没有出现的问题.
这不会给出任何错误,但没有任何反应.谢谢!
无需重新创建动画.使用CCSpeed操作将CCAnimate操作作为其内部操作.然后,您可以修改CCSpeed操作的速度属性以加快或减慢动画.
另一种方法是自己推进框架.这很容易做到,你只需要一个预定的更新和一个定时器,告诉你何时切换到下一帧.只需更改每帧添加到计时器的数量,即可加快或减慢动画速度.如果计时器大于特定值,则更改帧并将计时器重置为0.