LayaAir引擎计时器:延迟调用API(JS)
发表于2017-03-08
延迟调用callLater()是时钟管理类laya.utils.Timer中的一个常用方法。callLater是在本帧渲染之前,延迟调用某个回调函数,同一个回调函数是排重的,只会被调用一次。在涉及重复调用某个函数,使用延迟调用方法可避免重复运算或重复渲染,从而达到性能优化的目的。我们先看下该方法的API参数说明,如下图所示:

callLater示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | (function(){var Text = Laya.Text;var WebGL = Laya.WebGL;(function(){Laya.init(1136, 640, WebGL);Laya.stage.bgColor = "#ffffff";var s=0;for (var i = 1; i < 5; i++){s += i;//尽管处于循环中,callLater中的回调在渲染时仅执行一次,不会重复调用Laya.timer.callLater(this, onCallLater, [s]);}//显示for循环计算的值showText("循环计算的值:", s, 200, 100); })();function onCallLater(s){showText("callLater回调接收的值:", s, 200, 300);}function showText(t,i,x,y){var text = new Text();text.text = t + i; text.fontSize = 50;text.pos(x,y); Laya.stage.addChild(text); }})(); |
运行效果如下图所示:

在本次示例,for循环中采用callLater延迟执行,从运行结果上看,回调函数中显示接收的值是第一次调用的值。而循环外获得了完整的计算结果。充分说明在callLater中的回调方法,尽管被循环调用了多次,但都会被放到延迟队列中,在渲染时执行最早的调用。
