Я пытаюсь вызвать функцию из другого класса в моем комплекте спрайт/быстрой игры с этим кодом:Вызов функции из другого класса в Swift
class StarNode: GameObjectNode {
override func collisionWithBall(ball: SKNode) -> Bool {
endGame()
return true
}
}
Эта функция находится в другом классе:
func endGame() {
gameOver = true
GameFile.sharedInstance.saveState()
let reveal = SKTransition.fadeWithDuration(0.5)
let endGameScene = GameOverScene(size: self.size)
self.view!.presentScene(endGameScene, transition: reveal)
}
Но когда я звоню endGame() Я получаю это сообщение: Отсутствует аргумент для параметра № 1 при вызове.
Я попытался заставить его работать, но безуспешно. Что я могу сделать, чтобы заставить его работать?
Спасибо за ответ, но когда я использую этот код, я получаю это сообщение: «Невозможно вызвать инициализатор для типа« GameScene »без аргументов» –
Проверьте метод инициализации (т.е. init) вашего класса GameScene, он должен иметь какой-то аргумент, поэтому при инициализации вашего класса вам необходимо передать эти параметры. Если все еще не ясно, дайте мне знать, я дам вам ссылку. –
Я не думаю, что это решение, которое ищет OP.Экземпляр «AnotherClass» в этом примере (я полагаю, «GameScene» в приложении OP: s уже инициализирован и --- императивно --- не «активен». С помощью вышеприведенного решения вы создаете новый неуместный экземпляр GameScene и пытаетесь вызвать '.endGame()' в этом новом экземпляре. Это сопоставимо с созданием случайного экземпляра MyViewController в приложении, чтобы попытаться получить доступ к некоторому методу в экземпляре _actual_ MyViewController, который в настоящее время не является сценой в приложении. Вместо этого подхода я предлагаю использовать делегаты между двумя классами. – dfri