首页 文章

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

提问于
浏览
0

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

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

1 回答

  • 0

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

    这个API以非常_2736685的方式工作:它们不是一个闭包,而是一个 target 对象(在其上调用选择器)和String类型的方法选择器 .

    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)
        }
    }
    

相关问题