背景图像在Swift中不改变
所以基本上我是想让这个应用程序在按下按钮时改变背景。我尝试这样做的方式是设置一个变量0,如果按下按钮,它将使它变小或变大。目前,如果我手动更改类中的变量,背景确实会更改,但当我尝试使用按钮时,背景不会更改 这是我更改背景的代码 ///////////////////////////////////////////////////背景图像在Swift中不改变,swift,xcode,unity3d,sprite-kit,sknode,Swift,Xcode,Unity3d,Sprite Kit,Sknode,所以基本上我是想让这个应用程序在按下按钮时改变背景。我尝试这样做的方式是设置一个变量0,如果按下按钮,它将使它变小或变大。目前,如果我手动更改类中的变量,背景确实会更改,但当我尝试使用按钮时,背景不会更改 这是我更改背景的代码 /////////////////////////////////////////////////// let gameVC = SelectCharViewController() override func didMove(to view
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, height: frame.size.height)
backgroundImage.position = CGPoint(x: frame.midX, 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:)
,即
要使其在按下按钮时工作,您可以将该代码移动到自己的函数中,如下所示:
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, height: frame.size.height)
backgroundImage.position = CGPoint(x: frame.midX, y: frame.midY)
backgroundImage.zPosition = -1
addChild(backgroundImage)
}
}
struct Something {
static var scene = GameScene()
}
Something.scene.changeBackground(backgroundCheck2: 1)
然后,从按钮逻辑调用changeBackground(backgroundCheck2:)
,无论在哪里
您将需要场景的单个实例。大概是这样的:
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, height: frame.size.height)
backgroundImage.position = CGPoint(x: frame.midX, y: frame.midY)
backgroundImage.zPosition = -1
addChild(backgroundImage)
}
}
struct Something {
static var scene = GameScene()
}
Something.scene.changeBackground(backgroundCheck2: 1)
因此,在这种情况下,您可以这样调用函数:
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, height: frame.size.height)
backgroundImage.position = CGPoint(x: frame.midX, y: frame.midY)
backgroundImage.zPosition = -1
addChild(backgroundImage)
}
}
struct Something {
static var scene = GameScene()
}
Something.scene.changeBackground(backgroundCheck2: 1)
为什么要使用UIKit中的按钮来更改Sprite工具包中的某些内容?你想做的没有意义。