cocos2d iphone等待动作完成/完成

时间:2011-06-09 22:33:21

标签: iphone cocos2d-iphone

我正在尝试强制执行某个操作,然后才能调用另一个操作。我已经看了很多时间延迟和CCSequencing的不同例子,这是我到目前为止所做的,但它仍然无法正常工作。我需要完整的.5才能在另一个动作(无论是向左,向右还是向下)之前出现。只要你在动作结束前没有按下按钮,一切都会正常工作,那就是前一个动作被缩短的时候。

-(void) moveup{
    CCNode *mySprite = [self getChildByTag:kTagSprite];
    //moves sprite up 30 pixels in 1/2 second
    [mySprite runAction: [CCMoveTo actionWithDuration:.5 position:ccp(mySprite.position.x, mySprite.position.y+30)]];
}

//this is inside CCtouchesbegan.  upsprite is a box that gets clicked to move the object up
if(CGRectContainsPoint([upsprite boundingBox], point)){
    //should call CCSequence of events, method moveup, and then CCDelayTime, forcing a pause
    [self runAction:[CCSequence actions:[CCCallFuncND actionWithTarget:self selector:@selector(moveup) data:nil], [CCDelayTime actionWithDuration:.5], nil]];
}

我尝试暂停使用[[CCDirector sharedDirector] pause],但这冻结了一切,包括我正在移动的精灵。 CCDelayTime似乎在我当前的例子中不起作用。

我知道这个问题与其他几个关于ccsequencing的问题有些重复,所以如果它需要被标记为欺骗,那很好,但我真的很喜欢一些帮助,因为它真的阻止了我。

1 个答案:

答案 0 :(得分:1)

你可以制作一个BOOL“锁定”变量,只对“mySprite”执行操作:

if(lock) {[mySprite runAction:...];}

在开始时将BOOL锁定设置为NO,每次开始操作时将其设置为“YES”...然后将CCCallFunc添加到CCSequence以将锁定设置为“NO”