特定动作完成后如何调用块?

时间:2014-07-29 14:36:04

标签: objective-c cocos2d-iphone

我有布尔参数BOOL isMoving。 我想在特定操作完成运行后将此参数设置为FALSE。 我的代码如下所示:

CCActionMoveTo* actionMove = [CCActionMoveTo actionWithDuration:1.0f position:[self GetPosition]];
CCActionCallBlock* blockUpdate = [CCActionCallBlock actionWithBlock:^{isMoving= FALSE;}];
CCActionCallFunc* actionCallFunction = [CCActionCallFunc actionWithTarget:nil selector:@selector(accessDelegate:)];
CCActionSequence* seq = [CCActionSequence actions:actionMove,blockUpdate,actionCallFunction, nil];
[self runAction:seq];

不幸的是,blockUpdate和actionCallFunction都没有等到actionMove完成。 请帮忙

1 个答案:

答案 0 :(得分:1)

blockUpdate和actionCallFunction 执行等待actionMove完成您提供的代码。

我能提供的唯一解释是,移动到节点当前所在位置的移动操作将被忽略,因为节点“已经存在”。您对[self GetPosition]的使用似乎表明移动操作将节点移动到其当前位置:

CCActionMoveTo* actionMove = [CCActionMoveTo actionWithDuration:1.0f position:[self GetPosition]];

如果不是这种情况,请尝试使用CCActionDelay操作替换移动操作,等待n秒。