我想创建一个垂直移动的滚动背景。由于我想随时停止后台,因此我不希望在Update:
函数中实现它。
在我的代码中,背景垂直滚动,但仍然不完美。有时它会随机弹出,或者让整个场景降低 FPS。
更新 1:
就像克里斯蒂安说的,我现在使用了Update
函数,但用布尔值来确定它是否应该停止。如您所见,我加快了Scene
,但背景移动的速度不会改变。如何加快后台速度?
法典:
...
var Scroll:Bool!
...
self.runAction(SKAction.speedBy(2.0, duration: 25))
...
func addBackground(){
Background1 = SKSpriteNode(imageNamed: "Background.png")
Background1.size = CGSize(width: self.frame.size.width, height: self.frame.size.height)
Background1.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2)
Background1.zPosition = 1
self.addChild(Background1)
Background2 = SKSpriteNode(imageNamed: "Background.png")
Background2.size = CGSize(width: self.frame.size.width, height: self.frame.size.height)
Background2.position = CGPoint(x: self.frame.size.width / 2, y: Background1.position.y - Background2.size.height)
Background2.zPosition = 1
self.addChild(Background2)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
if (Scroll == true){
Background1.position = CGPointMake(Background1.position.x, Background1.position.y + 4)
Background2.position = CGPointMake(Background2.position.x, Background2.position.y + 4)
if(Background1.position.y > self.frame.size.height + (Background1.size.height / 2))
{
Background1.position = CGPointMake(self.frame.size.width / 2, Background2.position.y - Background1.size.height)
}
if(Background2.position.y > self.frame.size.height + (Background2.size.height / 2))
{
Background2.position = CGPointMake(self.frame.size.width / 2, Background1.position.y - Background2.size.height)
}
}
}
你应该把它放在update
方法中。您可以使用布尔值来停止更新过程。例如:
var moveBackground = true
func stopBackgroundMovement(){
moveBackground = false
}
//In your update-method:
if moveBackground {
//move the background
Background.position.y += 1
}
如果要每 x 秒调用一次 update 函数,可以使用 update 方法中的 NSTimeInterval
参数。