簡體   English   中英

SKAction序列是否實際等到行動結束?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM