【发布时间】:2016-03-05 01:13:21
【问题描述】:
我正在使用 Swift 和 SpriteKit 开发游戏。我希望背景以一定的分数发生变化。这是代码:
class GameScene: SKScene {
var bg = SKSpriteNode()
override func didMoveToView(view: SKView) {
makeBg()
}
func makeBg() {
let bgTexture = SKTexture(imageNamed: "img/bg.png")
let moveBg = SKAction.moveByX(-bgTexture.size().width, y: 0, duration: 9)
let replaceBg = SKAction.moveByX(bgTexture.size().width, y: 0, duration:0)
let animateBg = SKAction.repeatActionForever(SKAction.sequence([moveBg, replaceBg]))
for var i: CGFloat = 0; i<3; i++ {
let bg = SKSpriteNode(texture: bgTexture)
bg.name = "background"
bg.position = CGPoint(x: bgTexture.size().width/2 + bgTexture.size().width * i, y: CGRectGetMidY(self.frame))
bg.size.height = self.frame.height
bg.runAction(animateBg)
addChild(bg)
}
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if score == 0 {
bg.texture = SKTexture(imageNamed: "img/bg.png")
} else if score == 3 {
bg.texture = SKTexture(imageNamed: "img/bgOri.png")
}
}
但图像没有改变...哪里出错了?
【问题讨论】:
-
您是否检查过 if / else 块中的代码是否实际执行?此外,您在 touchesBegan 中使用了
bgTexture和bg.texture...这看起来很可疑... -
好的,这就是开始。让我试着重现这个问题......你有没有机会在某个时候看到 MissingResource 图像(里面有红色 X 的白框)?
-
请注意,您不需要扩展名(您可以从文件名中删除 .png)。无论如何,改变 bg 节点上的纹理对我有用,我想它对你有用。但是您已经添加了三个节点,并且只在一个节点上更改了纹理。其他两个节点没有被引用,也没有通过它的名字访问,所以目前没有办法改变它们的纹理。不过,我有点不清楚,您要在哪个节点上更改纹理。
-
我为你做了一个例子......看看我的答案。
-
您不应像以前那样编辑问题/答案。您已经删除了很多原始代码(并尝试编辑我的答案)。这样一来,answers / cmets 可能会让未来的读者感到困惑(因为 answer 和 cmets 是基于您的原始问题,而不是本次编辑)。
标签: ios swift sprite-kit skspritenode sktexture