如何动态更改CCSequence中的延迟?

时间:2013-02-24 07:29:58

标签: cocos2d-iphone

我有一个我试图重复的序列,并且每次重复出现都会改变延迟时间......如下:

__block CCDelayTime *delayTime = [CCDelayTime actionWithDuration:myDelay];

[CCRepeat actionWithAction:[CCSequence actions:
                            [CCCallFunc actionWithTarget:self selector:@selector(doSomething)],
                            delayTime,
                            [CCCallBlock actionWithBlock:^{
                            delayTime.duration = delayTime.duration / 2
                        }....

我得不到真正快速的地方..部署CCDelayTime的duration_ivar实例实际上正确地设置为其先前值的一半的事实,当单步执行代码时,看起来一旦控制到达一个对于基类'(CCActionInterval)方法(如step或update :),duration_ivar返回原始值(myDelay设置为)。

我花了很多时间浏览cocos代码,试图弄清楚为什么会这样,但最终决定放弃,看看这里是否有人可以帮助我。也许有一种更好的方法来做我想要做的事情?

1 个答案:

答案 0 :(得分:0)

你在这里做的是:调用一个函数,等待一段时间(延迟),运行一个块来改变已经运行的动作的等待时间。

您需要使用的是CCSpeed,向其添加延迟操作,并保留对CCSpeed的引用,以便您可以从 outside 序列中修改速度。