我在touchesBegan方法中有这段代码
let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:0.5)
myObstacle.runAction(action, withKey:"action")
我想做的是让用户在能够再次旋转障碍物之前等待.5秒。
有没有一种简单的方法可以在swift中执行此操作?
答案 0 :(得分:1)
在你的班级中加上一个计时器属性和一个布尔标志。
var timer: NSTimer?
var timerIsRunning = false
在touchesBegan
方法中检查计时器是否正在运行。如果是这样,只需从方法返回。
如果不是,请将timerIsRunning
设置为true,并以0.5秒的间隔启动计时器。将计时器的操作设置为一个简单地将timerIsRunning
设置为false并使计时器无效的方法。
func touchesBegan(..) {
if self.timerIsRunning {
return
}
// your touchesBegan code here
let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:0.5)
myObstacle.runAction(action, withKey:"action")
// start the timer
self.timerIsRunning = true
self.timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("timeUpdate:"), userInfo: nil, repeats: false)
}
func timerUpdate() {
self.timer?.invalidate()
self.timerIsRunning = false
}