【发布时间】:2014-10-13 17:21:45
【问题描述】:
我会从 GameViewController 调用我的计时器方法(在我的 GameScene 中编写),以便使用在 GameViewController 类中初始化的 UIButton 暂停游戏。
我正在尝试像这样使用class func:
class GameScene: SKScene, SKPhysicsContactDelegate {
override func didMoveToView(view: SKView) {
GameScene.startTimer()
}
class func startTimer(){
timerCount = NSTimer.scheduledTimerWithTimeInterval(1.0
, target: self, selector: Selector("updateTimer:"), userInfo: nil, repeats: true)
}
func updateTimer(dt:NSTimer){
counter--
counterGame++
if counter<0{
timerCount.invalidate()
removeCountDownTimerView()
} else{
labelCounter.text = "\(counter)"
}
if counterGame>20{
balloon.size = CGSizeMake(50, 50)
}
if counterGame>40{
self.physicsWorld.gravity = CGVectorMake(0, -0.8)
}
if counterGame>60{
self.physicsWorld.gravity = CGVectorMake(0, -1)
}
}
func removeCountDownTimerView(){
defaults.setInteger(balloonDestroyed, forKey: "score")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let settingController: UIViewController = storyboard.instantiateViewControllerWithIdentifier("GameOverViewController") as UIViewController
let vc = self.view?.window?.rootViewController
vc?.presentViewController(settingController, animated: true, completion: nil)
}
}
但是这段代码返回错误:
[Funfair_balloon.GameScene updateTimer:]: unrecognized selector sent to class 0x10b13d940
当我不使用class func 时,该应用程序运行良好,但我无法使用我的 UIButton 停止计时器。
我做错什么了?
【问题讨论】:
-
在您的
class func startTimer中,您告诉计时器在timerCount = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("updateTimer:"), userInfo: nil, repeats: true)中调用updateTimer,但类func 中的self不是实例,因此您不能使用它来调用您的updateTimer,是实例方法,不是类方法。 -
感谢您的回答。我用 GameScene() 替换了 self。我没有错误了,但计时器不工作。
标签: swift uibutton sprite-kit viewcontroller skscene