如何解决背景图像在 Swift 中没有改变
所以基本上我试图让这个应用程序在按下按钮时改变它的背景。我尝试这样做的方法是将变量设置为 0,如果按下按钮,它将减少 1 或增加 1。目前,如果我手动更改类中的变量,背景确实会改变,但当我尝试使用按钮时,背景不会改变。
这是我更改背景的代码 ///////////////////////////////////////////////// /
let gameVC = SelectCharViewController()
override func didMove(to view: SKView) {
let backgroundCheck2 = gameVC.getter()
physicsWorld.contactDelegate = self
// var backgroundImage = SKSpriteNode(imageNamed: "background")
if(backgroundCheck2 == 0){
let backgroundImage = SKSpriteNode(imageNamed: "background")
backgroundImage.size = CGSize(width: frame.size.width,height: frame.size.height)
backgroundImage.position = CGPoint(x: frame.midX,y: frame.midY)
backgroundImage.zPosition = -1
addChild(backgroundImage)
}
else{
let backgroundImage = SKSpriteNode(imageNamed: "background2")
backgroundImage.size = CGSize(width: frame.size.width,y: frame.midY)
backgroundImage.zPosition = -1
addChild(backgroundImage)
}
这是我的按钮代码
import UIKit
class SelectCharViewController: UIViewController {
public var backgroundCheck = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func nightShift(_sender: UIButton){
print(backgroundCheck)
self.backgroundCheck+=1;
print(backgroundCheck)
}
@IBAction func dayShift(_sender: UIButton){
print(backgroundCheck)
self.backgroundCheck-=1;
print(backgroundCheck)
}
func getter() -> Int{
return self.backgroundCheck
}
/*
// MARK: - Navigation
// In a storyboard-based application,you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
解决方法
可能有很多事情你可以做不同的事情(例如,使用布尔值而不是整数)。
但我怀疑您没有看到所需的行为,因为您的图像更改代码位于 didMove(to:)
,即 only called when the scene is first presented。
要使其在按下按钮时工作,您可以将该代码移动到您自己的函数中,如下所示:
func changeBackground(backgroundCheck2: Int) {
if backgroundCheck2 == 0 {
let backgroundImage = SKSpriteNode(imageNamed: "background")
backgroundImage.size = CGSize(width: frame.size.width,height: frame.size.height)
backgroundImage.position = CGPoint(x: frame.midX,y: frame.midY)
backgroundImage.zPosition = -1
addChild(backgroundImage)
} else {
let backgroundImage = SKSpriteNode(imageNamed: "background2")
backgroundImage.size = CGSize(width: frame.size.width,y: frame.midY)
backgroundImage.zPosition = -1
addChild(backgroundImage)
}
}
然后,从您的按钮逻辑中调用 changeBackground(backgroundCheck2:)
,无论在哪里。
您需要一个场景实例。像这样:
struct Something {
static var scene = GameScene()
}
因此,在这种情况下,您可以这样调用您的函数:
Something.scene.changeBackground(backgroundCheck2: 1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。