主调度

调用 Application 的实例化对象 app 的 onUpdate 方法就可以设置一个调度逻辑:

app.onUpdate(function () {
  sprite.setPositionX(sprite.getPositionX() + 0.1);
});

上面的代码片段,精灵 sprite 会以每帧 0.1 像素的速度向右移动。 可以看出,这实际上就是应用的主调度,每一帧你都可以增加其他逻辑,而且是任何时候、任何情况都可以调用,只要 app.run(..) 已经执行。

两个?

//设置一个调度逻辑
app.onUpdate(function (t) {
  console.log('one logic');
});
//再设置一个
app.onUpdate(function (t) {
  console.log('the other logic');
});
...

移除?使用方法 offUpdate

var fn = function() {
  console.log('update.');
}
app.onUpdate(fn);
// 将调度逻辑传入 offUpdate 即可
app.offUpdate(fn);

Tips

  • 关于开始 start 方法,实际上在执行 app.run(..) 时会自动调用;
  • 不用担心 onUpdate 设置多个会不会有性能问题,放心,Tiny.js 会处理好。当然,也不能太多,每一帧处理太多的运算,帧频也会下降;
  • onUpdate 的第一个入参是一个函数,而距离上一帧的时间间隔也会通过函数带回,上面代码片段的 t 就是。

注意

  • 如果传入相同的回调函数并多次调用 onUpdate,只会调用首次的回调函数,如果要强制调用某一次,可以设置第二个参数 force=true,如:

    var handler = function() {
      console.log('one logic');
    }
    // 设置一个调度逻辑
    app.onUpdate(handler);
    // 强制调用此次调度逻辑
    app.onUpdate(handler, true);
    
  • 如果切换场景或操作与调度逻辑相关,记得移除。