Cocos2d iphone 我如何在我的CCSequence中动态更改延迟?

Cocos2d iphone 我如何在我的CCSequence中动态更改延迟?,cocos2d-iphone,Cocos2d Iphone,我有一个我试图重复的序列,每次重复都会改变延迟时间。。。比如: __block CCDelayTime *delayTime = [CCDelayTime actionWithDuration:myDelay]; [CCRepeat actionWithAction:[CCSequence actions: [CCCallFunc actionWithTarget:self selector:@selector(doSomething)]

我有一个我试图重复的序列,每次重复都会改变延迟时间。。。比如:

__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_uIvar的实例已正确设置为其先前值的一半,当单步执行代码时,似乎只要控件到达一个基类(CCActionInterval)方法(如step或update:),duration_ivar就会返回到原始值(设置myDelay的值)


我花了相当多的时间研究cocos代码,试图找出发生这种情况的原因,但最终决定放弃,看看这里是否有人能帮助我。也许有更好的方法来完成我一开始想做的事情?

你在这里做的是:调用函数,等待一段时间(延迟),运行更改已运行操作的等待时间的块


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

我尝试了这个方法,但它不起作用——也许我误解了您……我做到了:u block CCSpeed*s=[CCSpeed actionWithAction:[CCDelayTime actionWithDuration:0.25f]速度:1];我得到“[CCSpeed duration]:发送到实例的未识别选择器”这是因为CCSpeed没有“持续时间”,请改用“speed”属性。虽然我不确定您是否可以更改块中的速度,因为块是在delayTime操作停止运行后调用的。我猜您可能应该简单地重新创建序列,每次都使用新的延迟。如果这是您的目标:更改每个seq的延迟在序列运行时运行而不是更改它。在这种情况下,重新创建序列是最简单的方法。您在这里到底想做什么?这似乎是计划选择器的作业,而不是操作。