问题描述
|
我正在尝试强制执行一项操作才能调用另一项操作。我到处都在寻找时序延迟和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 \”