Я развиваю игру с помощью Swift и SpriteKit. Я хочу, чтобы фон менялся с определенной оценкой. Вот код: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? Кроме того, вы используете 'bgTexture' и' bg.texture' внутри своих touchhesBegan ... Это выглядит подозрительно ... – Whirlwind
Да, код выполнен ... проблема в том, что я не могу изменить фоновое изображение во время работы сцены. ..пожалуйста помогите. Я могу изменить фоновое изображение только в том случае, если полностью изменить свой код ... объявляя var bg = SKSpriteNode (imageNamed: "img/bg.png") в gamescene ..., но оставляя статический фон без прокрутки. – Swift1
Хорошо, это начало. Позвольте мне попытаться воссоздать проблему ... Видите ли вы, случайно, что в какой-то момент изображение MissingResource (белая коробка с красным X в нем)? – Whirlwind