gpt4 book ai didi

ios - 如何调用另一个类中定义的函数?

转载 作者:搜寻专家 更新时间:2023-11-01 06:08:10 25 4
gpt4 key购买 nike

我已经创建了一个 SpriteKit 项目并在 GameScene.swift 文件中定义了一个函数。所述函数创建一个 SKSpriteNode 并且在其类中调用时运行没有问题。

func generateShip() {
self.removeAllChildren()
let SKSprite1 = SKSpriteNode(imageNamed: "Spaceship")
SKSprite1.size = CGSize(width: CGFloat(arc4random_uniform(UInt32(200))), height: CGFloat(arc4random_uniform(UInt32(200))))
SKSprite1.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
self.addChild(SKSprite1)
}
//if I called it here with touchesBegan, it worked.

现在,在我的 ViewController 中,我创建了一个简单的按钮并将其连接到它的 swift 文件。我在下面的代码之前做了一些事情,但这是我遇到问题的部分。

let gameScene = GameScene()

@IBAction func newShip(sender: AnyObject) {
gameScene.generateShip() // am I doing this wrong?
}

当我运行应用程序并单击按钮时,没有任何反应。我需要改变/做些什么才能发挥作用……嗯……发挥作用?

链接:Full Code , Iphone

最佳答案

问题出在这段代码中:

let gameScene = GameScene()

override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as! SKView
skView.presentScene(GameScene(fileNamed: "GameScene"))
}

您的 gameScene 属性与您呈现的场景不同。那是两个独立的对象。您需要做两件事。

  1. 将您的 gameScene 声明更改为类似于您在演示代码中创建的新声明。像这样:

    let gameScene = GameScene(fileNamed: "GameScene")
  2. viewDidLoad 中,显示 GameScene 对象而不是创建一个新对象,如下所示:

    skView.presentScene(gameScene)

通过这种方式,您可以创建一个 GameScene 对象,呈现它,然后在同一对象上调用 generateShip()

关于ios - 如何调用另一个类中定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com