egret-docs-master/extension/game/timeoutTrigger/README.md

1.9 KiB
Raw Blame History

1.启动超时触发器

有一种需求,是在运行一定时间后,触发一个事件。比如某个对话框提示呈现后,需要在几秒钟之后自动消失。

Egret提供的egret.setTimeout可实现上述功能。该函数原型为:

function setTimeout(listener: Function, thisObject: any, delay: number, ...args: any[]): number;
  • listener是待执行的回调函数
  • thisObject设置为this即可
  • delay设定超时等待的毫秒数,
  • ...args为随意个数的参数,也可以没有任何参数。

下面示例演示超时触发器的使用方法:

var idTimeout:number = egret.setTimeout( function( arg ){

        console.log( "timeout:", arg );

    }, this, 3000, "egret"

);

console.log( "start setTimeout" );

编译运行,首先输出"start setTimeout"等待3秒后将会出现"timeout: egret",证实触发器准确运行。

2.停止超时触发器

超时等待阶段可能会有需求停止超时触发器接着上述示例如果在超时结束前用户触摸对话框的关闭或确定按钮就需要取消超时触发器。Egret 提供 egret.clearTimeout 取消超时触发器。在 egret.setTimeout 执行时返回一个 ididTimeout 这个id就是用来取消超时触发器的

egret.clearTimeout( idTimeout );

在超时等待结束前,执行该语句,将会停止超时触发器,回调函数将不再会执行。

超时等待结束时,将立即执行回调函数,此后执行egret.clearTimeout将不再有意义。

注意,本教程所用的egret.setTimeoutegret.clearTimeout均在egret包下,这是 Egret 引擎实现的超时触发器跟javascript本身的setTimeoutclearTimeout不可混用。即执行egret.setTimeout返回的超时id无法用javascript本身的clearTimeout来停止,反之亦然。