[英]Does the SKAction sequence actually wait until the action ends?
我有以下代碼:
-(void)aggravatedSeek:(SKSpriteNode *)target{
_isAggravated = YES;
SKAction *action = [SKAction runBlock:^{
double randTime = 0.2;
NSLog(@"%f", randTime);
[self moveToSpriteNode:target withTimeInterval:randTime];
}];
//SKAction *repeatAction = [SKAction repeatAction:action count:6];
SKAction *rep = [SKAction sequence:@[action, action, action, action, action]]; //Test Sequence
[self runAction:rep completion:^{
[self runAction:blackColorAction];
_isAggravated = NO;
}];
}
我希望我的行動能夠等到上一個動作完成。 意思是,我的行為需要排序,以便在對象完成移動之前, rep
動作不會重復action
動作。 目前,似乎輸出立即運行所有操作,並且不會像它應該那樣對它們進行排序。 我已經閱讀了文檔,我現在所擁有的是他們所說的......
runBlock:
action是一次fire-action類型的操作。 它將只運行一次塊,然后立即執行“結束”。
你想要的是行動不是為了處理而設計的。 它們運行一次,或者運行一段時間(持續時間)。 但是,它們不會在滿足某些任意條件之前運行 - 這可能是立即成立的,最終可能成為現實或可能永遠不會成為現實。 這種無效的所有可變定時特征動作都能夠(即線性與容易縮放時間)。
您可以做的是將“moveToSpriteNode”運動作為動作發出,並分別檢查更新方法是否精靈到達節點。 如果是這樣,您將運行下一個移動動作(不使用序列)。
更簡單的是,您可以簡單地依賴移動操作來結束精靈到達目標節點的意義。 然后,這將觸發序列中的下一個移動動作。 如果要在每個目標上運行完成塊,只需在完成塊中安排下一個移動操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.