主调度
调用 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);
如果切换场景或操作与调度逻辑相关,记得移除。