BK.Ticker 计时器

定时器

成员变量

变量 类型 名称 备注
interval number 每调用60次所需的秒时 例如:1代表 1秒调用60次。2代表2秒内调用60 。即1代表60帧/秒 2代表 30帧/秒
paused boolean 暂停 true代表暂停,false代表运行

方法

dispose()

销毁当前对象

返回值:无

例子:

  1. var t = new BK.Ticker();
  2. t.dispose();

setTickerCallBack( func )

设置定时回调函数

参数

名字 类型 名称 备注
func function 设置的回调函数 函数第一个参数ts代表,当前时间戳,单位为毫秒,第二个参数为帧间隔,单位为秒

返回值:无

例子:

  1. var t = new BK.Ticker();
  2. t.interval = 1;
  3. t. setTickerCallBack(function(ts,duration)
  4. {
  5. //定时回调
  6. });

2.3 BK.Director.ticker

程序主ticker该ticker为程序主定时器,为开发方便,特地添加了几种方法方便开发者进行调用。下列4个方法仅BK.Director.ticker独有,非BK.Ticker通用函数

方法

add(callback,obj)

添加一个方法回调至主循环中

参数:

参数 类型 名称 备注
callback function 回调函数
obj obj 回调函数的绑定对象 可选参数

返回值:无

例子:

  1. //1.不绑定obj
  2. BK.Director.ticker.add(function(ts,duration){
  3. //do something
  4. });
  5. //2.将回调函数绑定至obj对象中,方便后续解除绑定
  6. var obj = {}
  7. BK.Director.ticker.add(function(ts,duration){
  8. //do something
  9. },obj);

remove(obj)

根据obj移除对应的回调函数与add函数对应,当无需调用时,可根据add时传入的obj来移除回调

返回值:无

例子:

  1. var obj = {}
  2. BK.Director.ticker.add(function(ts,duration){
  3. //do something
  4. },obj);
  5. BK.Director.ticker.remove(obj);

setTimeout(func,millsecond,obj)

延迟回调函数在延迟millsecond时间后,调用func函数

参数:

参数 类型 名称 备注
func function 回调函数
millsecond number 延迟时间
obj object 绑定对象 可选参数

返回值:无

例子:

  1. //延迟3秒后调用函数
  2. //1.不绑定对象
  3. BK.Director.ticker.setTimeout(function () {
  4. BK.Script.log(0,0,"Timeout call!2 curr = "+BK.Time.timestamp);
  5. },3000);
  6. //2.绑定对象
  7. var obj = {}
  8. BK.Director.ticker.setTimeout(function () {
  9. BK.Script.log(0,0,"Timeout call! curr = "+BK.Time.timestamp);
  10. },3000,obj);

removeTimeout(obj)

移除延迟回调函数与setTimeout对应,移除obj绑定的延迟回调函数

参数:

参数 类型 名称 备注
obj object 绑定对象 可选参数

返回值:无

例子:

  1. var obj = {}
  2. BK.Director.ticker.setTimeout(function () {
  3. BK.Script.log(0,0,"Timeout call! curr = "+BK.Time.timestamp);
  4. },3000,obj);
  5. BK.Director.ticker.removeTimeout(obj);

注意事项

防止离开作用域后实例被js引擎销毁

当BK.Ticker实例在一个作用域生成后,当程序的执行离开所在的作用域后,ticker实例会被js引擎回收。因此当使用ticker作为定时器时,需确保实例的生命周期是符合设计的

例如下面的例子,当ticker对象离开loadTicker函数作用域后,ticker对象会被js引擎回收,定时器不会继续执行。

  1. function loadTicker() {
  2. var ticker = new BK.Ticker();
  3. ticker.interval = 2;
  4. ticker.setTickerCallBack(function(ts,duration)
  5. {
  6. BK.Script.log(0,0,"update");
  7. })
  8. }
  9. loadTicker();

例子

查看 script/demo/basics/ticker_demo.js

原文: https://hudong.qq.com/docs/engine/api/BK.Ticker.html