淡入和淡出SKLabelNodes的最佳方式

时间:2016-04-20 18:03:24

标签: swift optimization sprite-kit sklabelnode

我正在开发一款小型SpriteKit游戏。

我在主屏幕上有一个“提示”部分,我想要进出脉冲,每次显示不同的提示。

我有一个有效的方法,我自己写的,但它很混乱,我确信有更好的方法可以做到。我希望有人可以告诉我一种方式,也许我错过了(或者做了很长时间)。

这就是我目前的做法:

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") }

如何优化此功能?

1 个答案:

答案 0 :(得分:5)

不需要创建多个标签也不需要执行多个操作,只需创建一个您想要执行的操作的数组,然后迭代它。

if (mysqli_num_rows($result) > 0){
 while ($row = mysqli_fetch_array($result)){
  #do things
}
}