0
我試圖強制一個動作完成,然後才能調用另一個動作。我查看了各種時間延遲和CCSequencing的例子,這是迄今爲止,但它仍然無法正常工作。我需要完整的.5出現在另一個動作之前(無論是向左,向右還是向下)。只要你在動作完成之前沒有按下按鈕,所有事情都會發揮作用,那就是當先前的動作被縮短時。cocos2d iphone等待動作完成/完成
-(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其他人的副本,所以如果它需要被標記爲複製,那很好,但我真的很喜歡一些幫助,因爲它真的讓我失望。
這與我最終做的相似。最簡單的方法是調用初始移動動作,然後在該調用下調用[lolosprite runAction:[CCSequence actionOne:[CCDelayTime actionWithDuration:.5] two:[CCCallFunc actionWithTarget:self selector:@selector(enabletouch)]]] ]。使用它你可以直接禁用觸摸,直到你用方法enabletouch再次打開它。我正在用CCAction方法(isdone)嘗試bool方法,但isdone總是返回false,所以bool從未被設置回解鎖狀態。我仍不確定爲什麼isdone沒有工作。 – 2011-06-10 14:37:12
我有同樣的問題,不知道我是否理解你的解決方案 – RollRoll 2014-08-12 15:34:45