Ios Swift-通过iAction按钮(在课堂上)调用SKAction

Ios Swift-通过iAction按钮(在课堂上)调用SKAction,ios,swift,avaudioplayer,ibaction,skview,Ios,Swift,Avaudioplayer,Ibaction,Skview,我是Swift的新手-在搜索了这么多小时后,我需要你们专业人士的帮助:D 使用Swift计划一个小型IOS应用程序,结构如下: 游戏视图控制器 游戏场景 在游戏场景中,我放置了一个小图像: class GameScene: SKScene { private var tanzschuhR: SKSpriteNode! override func didMove(to view: SKView) { self.size = CGSize(width: 1024, height: 10

我是Swift的新手-在搜索了这么多小时后,我需要你们专业人士的帮助:D

使用Swift计划一个小型IOS应用程序,结构如下:

  • 游戏视图控制器
  • 游戏场景
在游戏场景中,我放置了一个小图像:

class GameScene: SKScene {
private var tanzschuhR: SKSpriteNode!
override func didMove(to view: SKView) {

    self.size = CGSize(width: 1024, height: 1024)
    self.backgroundColor = .gray
    self.scaleMode = .aspectFill

    let startPt = CGPoint(x: 500, y: 400)
    tanzschuhR = SKSpriteNode(imageNamed: `SchuhR`)
    tanzschuhR.position = startPt
    tanzschuhR.zPosition = 1

    self.addChild(tanzschuhR)

    func swingPattern1() {
        // move it
        let negDelta = CGVector(dx: -50, dy: -50)
        let action = SKAction.move(by: negDelta, duration: 4)
        tanzschuhR.run(action)
    }
}
}
现在,我只想从GameViewController中的iAction按钮启动函数swingPattern1(),以便启动图像同步到正在播放的音频的移动

这是按钮的一部分:

@IBAction func playIt(_ sender: UIButton) {
    playMultipleSound()
// no idea to call the function swingPattern1()
// always get an error
}
有人能帮我吗

如果点击按钮,如何调用此函数

或者有没有其他更好的方法通过点击按钮来启动音频运动

非常感谢你的帮助


更新:

我将var放在iAction中:

@IBAction func playIt(_ sender: UIButton) {
    playMultipleSound()
    let gameScene = GameScene()
    gameScene.swingPattern1()

}
不知道,如果语法正确-抱歉…:D

生成并运行后,我收到以下错误:


应用程序停止…

首先,移动
swingPattern1
外部
didMove(查看:SKView)

然后在视图控制器中

@IBAction func playIt(_ sender: UIButton) {
    playMultipleSound()

    // Assuming you already have a var gameScene: GameScene
    gameScene.swingPattern1()
}

首先,移动
swingPattern1
外部
didMove(查看:SKView)

然后在视图控制器中

@IBAction func playIt(_ sender: UIButton) {
    playMultipleSound()

    // Assuming you already have a var gameScene: GameScene
    gameScene.swingPattern1()
}

非常感谢您的快速帮助,但是:我必须如何假设这个var,在哪个位置?像这样:让GameSecene=GameSecene()GameSecene.swingPattern1()?!?我尝试过这种方法,但函数中出现了另一个错误:->tanzschuhR.run(action)-->AQDefaultDevice(173):跳过输入流0 0 0x0致命错误:在展开可选值时意外发现nil非常感谢您的快速帮助,但是:我必须如何假定此变量,在哪个位置?像这样:让GameSecene=GameSecene()GameSecene.swingPattern1()?!?我尝试过这种方法,但在函数中出现了另一个错误:->tanzschuhR.run(action)-->AQDefaultDevice(173):跳过输入流0 0 0x0致命错误:在打开可选值
tanzschuhR
is
nil
-它被分配到哪里?在类的开头…所以,似乎在
didMove(to view:SKView)
之前调用了
swingPattern1()
,因此没有为
tanzschuhR
赋值。好的,听起来很合乎逻辑。我必须把所有的东西都放在函数中吗?或者你有其他解决方案吗?也许我的swift结构从一开始就错了。。。我只是想在启动音频(舞鞋,音乐启动时)时启动动画(移动spritekit图像)。当按下iAction按钮时,音频开始。。。一切都在一个GameViewcontroller中,有一个单独的游戏场景。还有其他解决方案吗?
tanzschuhR
nil
-它被分配到哪里了?在开始的时候,在
didMove(查看:SKView)
之前调用了
swingPattern1()
,所以
tanzschuhR
没有被分配值。好的,听起来很合乎逻辑。我必须把所有的东西都放在函数中吗?或者你有其他解决方案吗?也许我的swift结构从一开始就错了。。。我只是想在启动音频(舞鞋,音乐启动时)时启动动画(移动spritekit图像)。当按下iAction按钮时,音频开始。。。一切都在一个GameViewcontroller中,有一个单独的游戏场景。还有其他解决办法吗?