我正在寻找一种在不使用后卫的情况下退出功能的方法。经过广泛的搜索,我找不到退出函数的方法,并在按下按钮的同时调用下一个函数。 该按钮使用选择器调用重复:
@IBAction func BottomLeft(sender: AnyObject) {
NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(0.01), target: self, selector: "bottomLeftMovement", userInfo: nil, repeats: true)
}
这是按下代码按钮的时候,球将跟随此动作:
func bottomLeftMovement() {
Ballx = Ballx - 0.6125
Bally = Bally + 1.2
self.Ball.center.x = Ballx
self.Ball.center.y = Bally
}
我希望这样做,以便当按下另一个按钮时,将退出此功能并调用相应的功能。
我不能硬编入第一个函数,因为它是一个可互换的东西,而不是函数链。
非常感谢任何帮助。
答案 0 :(得分:1)
您的代码正在做的是每次点击按钮时创建一个新的计时器。这不是正确的方法。我建议你做一些关于游戏开发的研究/阅读。 但基本上,如果你要用这种方式做事(这也不是一件好事(tm))。您需要在属性中跟踪计时器,并使其无效(以阻止它)。了解计时器(https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/)
因此,简而言之:
- 不要这样做
- 如果必须,请在物业中跟踪您的计时器
- 使计时器无效()并根据需要开始新计时器
注意:跟踪并使计时器无效,如下所示: (注意我是从记忆中做到这一点,没有经过测试,但有些内容......)
class someClass {
var myTimer = NSTimer?
func myFunction() {
if let timer = myTimer {
timer.invalidate()
}
timer = NSTimer(...