2016-01-30 37 views
0

在我SpriteKit遊戲的gameOverScene,我有一個出現在屏幕上的3個按鍵。SpriteKit SKSequence使UI按鈕呈

我試圖讓他們「流行的」,一個接一個......我想出一個巧妙的方法是在淡化他們從0阿爾法滿。

目前,我正在做這樣的:

//animate in buttons 
    restartButton.alpha = 0 
    shareButton.alpha = 0 
    exitButton.alpha = 0 

    let bringInUIButtons = SKAction.sequence([ 
     SKAction.waitForDuration(1.0), 
     SKAction(restartButton.runAction(SKAction.fadeInWithDuration(0.3))), 
     SKAction.waitForDuration(1.0), 
     SKAction(shareButton.runAction(SKAction.fadeInWithDuration(0.3))), 
     SKAction.waitForDuration(1.0), 
     SKAction(exitButton.runAction(SKAction.fadeInWithDuration(0.3))), 
     ]) 

    runAction(bringInUIButtons) 

但他們都消失在一次......雖然,我的序列的一部分,我等待在-之間的第二每個動作。

我甚至試過這樣:

//animate in buttons 
    restartButton.alpha = 0 
    shareButton.alpha = 0 
    exitButton.alpha = 0 

    let bringInUIButtons = SKAction.sequence([ 
     SKAction.waitForDuration(1.0), 
     SKAction(restartButton.runAction(SKAction.fadeInWithDuration(0.3))), 
     SKAction.waitForDuration(1.0), 
     SKAction(shareButton.runAction(SKAction.fadeInWithDuration(0.6))), 
     SKAction.waitForDuration(1.0), 
     SKAction(exitButton.runAction(SKAction.fadeInWithDuration(0.9))), 
     ]) 

    runAction(bringInUIButtons) 

...並通過改變在持續時間褪色,所以每個按鍵需要更長的時間出現,但它並沒有看起來非常好。

我使用的waitForDuration不正確?我想它會在開始序列中的下一個動作之前等待?

我怎樣才能使第一次之後的下一個按鈕出現?

回答

1

我認爲問題是,你有每個按鈕運行自己「淡入」行動,這意味着它們將在並行執行他們的行動。如果你希望他們同時在場景中出現一個,最好是有現場運行的操作。這裏是我的解決方案...

當你實例restartButtonshareButtonexitButton,如下圖所示設置它們的名稱屬性:

restartButton.name = "restartButton" 
shareButton.name = "shareButton" 
exitButton.name = "exitButton" 

您可以使用這些name屬性來指定要在其上的按鈕使用runAction(_:onChildWithName:)方法運行「淡入​​」操作。 當需要淡入按鈕時,請使用以下一組操作:

let fadeIn = SKAction.fadeInWithDuration(1) 
let wait = SKAction.waitForDuration(1) 

let bringInRestartButton = SKAction.runAction(fadeIn, onChildWithName: "restartButton") 
let bringInShareButton = SKAction.runAction(fadeIn, onChildWithName: "shareButton") 
let bringInExitButton = SKAction.runAction(fadeIn, onChildWithName: "exitButton") 

let bringInUIButtons = SKAction.sequence([ 
    bringInRestartButton, 
    wait, 
    bringInShareButton, 
    wait, 
    bringInExitButton 
]) 

runAction(bringInUIButtons)