cocos2d iphone等待操作完成/完成

问题描述

| 我正在尝试强制执行一项操作才能调用另一项操作。我到处都在寻找时序延迟和CCSequencing的不同示例,这是我到目前为止的内容,但仍然无法正常工作。在调用一个动作(无论是向左,向右还是向下)之前,我需要完整的0.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]];
}
我尝试使用ѭ1暂停,但这会冻结所有内容包括我要移动的精灵。在我当前的示例中,CCDelayTime似乎不起作用。 我知道这个问题是关于ccsequencing的其他问题的重复,所以如果需要将其标记为重复,那很好,但是我真的希望得到一些帮助,因为它确实使我感到困惑背部。     

解决方法

        您可以创建BOOL \“ lock \”变量,并且仅在\“ mySprite \”上运行操作:
if(lock) {[mySprite runAction:...];}
在开始时将BOOL锁定设置为NO,每次开始操作时将其设置为\“ YES \” ...然后将CCCallFunc添加到CCSequence以将锁定设置回\“ NO \”