1
我正在研究一個小型的SpriteKit遊戲。淡入淡出SKLabelNodes的最佳方式
我在主屏幕上有一個「提示」部分,我想進入和退出,每次顯示不同的提示。
我有一種方法可以工作,我自己寫的,但它很混亂,我確信有更好的方法可以完成。我希望有人能給我一種可能讓我錯過的方式(或者很長一段時間)。
這是我目前要做的事:
func createTipsLabels(){
//create SKLabelNodes
//add properties to Labels
//tip1Label... etc
//tip2Label... etc
//tip3Label... etc
//now animate (or pulse) in tips label, one at a time...
let tSeq = SKAction.sequence([
SKAction.runBlock(self.fadeTip1In),
SKAction.waitForDuration(5),
SKAction.runBlock(self.fadeTip1Out),
SKAction.waitForDuration(2),
SKAction.runBlock(self.fadeTip2In),
SKAction.waitForDuration(5),
SKAction.runBlock(self.fadeTip2Out),
SKAction.waitForDuration(2),
SKAction.runBlock(self.fadeTip3In),
SKAction.waitForDuration(5),
SKAction.runBlock(self.fadeTip3Out),
SKAction.waitForDuration(2),
])
runAction(SKAction.repeatActionForever(tSeq)) //...the repeat forever
}
//put in separate methods to allow to be called in runBlocks above
func fadeTip1In() { tip1Label.alpha = 0; tip1Label.runAction(SKAction.fadeInWithDuration(1)) ; print("1") }
func fadeTip1Out(){ tip1Label.alpha = 1; tip1Label.runAction(SKAction.fadeOutWithDuration(1)); print("2") }
func fadeTip2In() { tip2Label.alpha = 0; tip2Label.runAction(SKAction.fadeInWithDuration(1)) ; print("3") }
func fadeTip2Out(){ tip2Label.alpha = 1; tip2Label.runAction(SKAction.fadeOutWithDuration(1)); print("4") }
func fadeTip3In() { tip3Label.alpha = 0; tip3Label.runAction(SKAction.fadeInWithDuration(1)) ; print("5") }
func fadeTip3Out(){ tip3Label.alpha = 1; tip3Label.runAction(SKAction.fadeOutWithDuration(1)); print("6") }
如何優化呢?
這看起來很不錯:DI好像在runBlock出現錯誤,因爲它期望得到一個「,」其中的「;」...這就是我一直致力於調用函數的原因從runBlock ...任何想法? – Reanimation
對不起,需要{},我修改了代碼 – Knight0fDragon
哦!哇!那太方便了!我怎麼也不知道你可以這樣使用runBlocks。值得發佈這個問題只是爲了發現:D它提示'self.tipLabel',但現在都好。超級,非常感謝你! – Reanimation