隐藏时淡入

时间:2016-05-03 22:05:25

标签: ios swift sprite-kit

当我第一次触摸屏幕时,我试图将对象淡入我的游戏中,但我认为因为它在之前(游戏发布时)被隐藏了,所以它不会淡入,但是只显示没有任何动画。

你有什么建议吗?


这是一个示例代码:

import SpriteKit

class GameScene: SKScene {

    var myLabel = SKLabelNode()
    var gameStarted = Bool()

    func setupMyLabel(){
        myLabel = SKLabelNode(fontNamed:"Chalkduster")
        myLabel.text = "Hello, World!"
        myLabel.fontSize = 35
        myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
    }

    override func didMoveToView(view: SKView) {
        /* Setup your scene here */

        setupMyLabel()
        self.addChild(myLabel)
        myLabel.hidden = true

        gameStarted = false
    }

    func startGame(){
        myLabel.hidden = false
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
       /* Called when a touch begins */

        if gameStarted == false{

            gameStarted = true

            startGame()
            self.myLabel.runAction(SKAction.fadeInWithDuration(2.0))
        }
        else{
            //do nothing
        }
    }
}

1 个答案:

答案 0 :(得分:2)

根据Apple fadeInWithDurationrunAction的说法,它指出:

  

当动作执行时,节点的alpha属性将从其动画显示   当前值为1.0。

所以你正确地思考它是因为你的节点在启动时是隐藏的。 =)

一种可能的解决方案是将节点的隐藏属性设置为true,而不是将其alpha值设置为0.或者您甚至可以创建自己的方法来执行包含{{ 1}}方法将alpha设置为0,取消隐藏节点,然后调用类似于下面的SKAction.fadeInWithDuration(请原谅任何语法错误,这是自由伪代码)...

startGame()
self.fadeIn(self.myLabel, duration: 2.0)

...

func fadeIn() {
    self.myLabel.alpha = 0.0
    self.myLabel.hidden = false
    self.myLabel.runAction(SKAction.fadeInWithDuration(2.0))
}