Swift - вызов SKAction (в классе) с кнопки IBAction
Я новичок в Swift - после долгих поисков мне нужна помощь профессионалов:D
Планируя небольшое приложение IOS со Swift, это структура:
- GameViewcontroller
- GameScene
В GameScene я поместил небольшое изображение:
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)
}
}
}
Сейчас я просто хочу запустить функцию swingPattern1() с кнопки IBAction в GameViewController, чтобы начать движение изображения, синхронизированного с воспроизводимым звуком.
Это часть кнопки:
@IBAction func playIt(_ sender: UIButton) {
playMultipleSound()
// no idea to call the function swingPattern1()
// always get an error
}
Итак, кто-нибудь может мне помочь?
Как вызвать эту функцию, если кнопка нажата?
Или есть другой, лучший способ запустить аудио и движение, нажав кнопку?
Большое спасибо за вашу помощь...
ОБНОВИТЬ:
Я поместил вар в IBAction:
@IBAction func playIt(_ sender: UIButton) {
playMultipleSound()
let gameScene = GameScene()
gameScene.swingPattern1()
}
Не знаю, правильный ли это синтаксис - извините...:D
После BUILD&RUN я получаю эту ошибку:
Приложение останавливается...
1 ответ
Во-первых, двигаться swingPattern1
вне didMove(to view: SKView)
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)
}
}
Тогда, по вашему мнению, контроллер...
@IBAction func playIt(_ sender: UIButton) {
playMultipleSound()
// Assuming you already have a var gameScene: GameScene
gameScene.swingPattern1()
}