当我第一次触摸屏幕时,我试图将对象淡入我的游戏中,但我认为因为它在之前(游戏发布时)被隐藏了,所以它不会淡入,但是只显示没有任何动画。
你有什么建议吗?
这是一个示例代码:
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
}
}
}
答案 0 :(得分:2)
根据Apple fadeInWithDuration
对runAction
的说法,它指出:
当动作执行时,节点的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))
}