Swift - 为touchesBegan中的动作添加计时器

时间:2014-10-23 22:03:11

标签: ios swift action

我在touchesBegan方法中有这段代码

let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:0.5)
myObstacle.runAction(action, withKey:"action")

我想做的是让用户在能够再次旋转障碍物之前等待.5秒。

有没有一种简单的方法可以在swift中执行此操作?

1 个答案:

答案 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
}