我需要CCMoveTo
连续移动一个精灵,作为一系列动作。但是,每次迭代都需要更改精灵本身以及持续时间。这是单一动作。
id cloudAction = [CCSequence actions:
[CCMoveTo actionWithDuration:15.0 position:ccp(-spriteCloud.contentSize.width/2, windowSize.height/2)],
cloudActionComplete,
nil
];
[spriteCloud runAction:cloudAction];
15
秒,精灵本身,开始位置,结束位置都需要在每次CCMoveTo
完成时更改。但我不确定如何有效地从cloudActionComplete
阻止操作重新运行此操作。CCRepeatForever
由于我的动作的动态性质,我无法使用。也许有更好的方法来完成这样的任务?
更新:
这是我的尝试
id cloudActionComplete = [CCCallBlock actionWithBlock:^(void)
{
spriteCloud.position = ccp(windowSize.width + spriteCloud.contentSize.width/2, windowSize.height/2);
id cloudAction = [CCSequence actions:
[CCMoveTo actionWithDuration:RANDOMRANGE(2, 10) position:ccp(-spriteCloud.contentSize.width/2, windowSize.height/2)],
cloudActionComplete,
nil
];
[spriteCloud runAction:cloudAction];
}];
[spriteCloud runAction:cloudActionComplete];
它只工作一次,我认为问题在于完成动作递归。cloudActionComplete
是零。