在Swift中以10秒的间隔生成SKSpriteNode

时间:2015-08-08 20:35:54

标签: xcode swift

我想每隔十秒产生一个敌人(SKSpriteNode)并随着时间的推移增加时间。有谁知道我怎么能做到这一点?

P.S。我已经尝试使用NSTimer,但我不断收到错误说:不能使用类型'的参数列表调用'scheduledTimerWithTimeInterval'(Double,target:GameScene - >() - > GameScene,selector:String,userInfo:nil,重复:Bool)'

1 个答案:

答案 0 :(得分:0)

您只是错误地将参数调用到scheduledTimerWithTimeInterval方法。

此API以非常“老式”的方式工作:它们不使用闭包而是使用target对象(在其上调用选择器)和String -typed 方法选择器

target通常只是self,例如您正在启动计时器的控制器也应该接收计时器事件。

selector应该只是一个硬编码字符串:"handleTimer:"

所以你有:

class MyController {
    override func viewDidLoad() {
        super.viewDidLoad()
        /* Repeats every 10 seconds. handleTimer() can feel free to invalidate
           and re-schedule this timer at a different interval */
        NSTimer.scheduledTimerWithTimeInterval(10.0, self, "handleTimer:", nil, true)
    }

    func handleTimer(timer: NSTimer) {
        /* Do my awesome GameKit stuff here, using stored properties to refer to
           all my scene objects. (Since I don't get any params passed in) */
        /* Now play with the timer any way I like, e.g.: */
        let newInterval = timer.timeInterval + 1.0
        timer.invalidate()
        NSTimer.scheduledTimerWithTimeInterval(newInterval, self, "handleTimer:", nil, true)
    }
}