actionscript 3.0如何设置时间延迟

时间:2013-10-19 19:58:02

标签: actionscript-3 flash timer delay

有没有办法让我的功能延迟3秒。除了等待3秒然后执行一个函数,我希望它等待3秒然后执行它将在3秒前完成的功能。

我可能在最后一句话中没有意义,但这是一个例子:

实施例。走路,然后你跟着你做的跟你做的完全一样,除了延迟3秒。

提前感谢。

2 个答案:

答案 0 :(得分:8)

AS3中的函数是第一类成员,这意味着它们可以作为参数传递。设置延迟的一种方法是定义一个'延迟'函数,如下所示:

function delayedFunctionCall(delay:int, func:Function) {
    trace('going to execute the function you passed me in', delay, 'milliseconds');
    var timer:Timer = new Timer(delay, 1);
    timer.addEventListener(TimerEvent.TIMER, func);
    timer.start();
}


function walkRight() {
    trace('walking right');
}

function saySomething(to_say:String) {
    trace('person says: ', to_say);
}

//Call this function like so:

delayedFunctionCall(2000, function(e:Event) {walkRight();});

delayedFunctionCall(3000, function(e:Event) {saySomething("hi there");});

您需要延迟的函数需要使用这样的匿名函数“包装”,因为.addEventListener方法期望传递一个只有一个参数的函数:Event对象。

(但您仍然可以指定要传递给匿名函数中的延迟函数的参数。)

答案 1 :(得分:0)

触发后3秒后会发生什么功能?

var timer:Timer
function example():void{
var.addEventlistener(Whatever.Event, any_function);}

function any_function(event:Whatever){
    timer = new Timer(3000, 1);
    timer.addEventListener(TimerEvent.TIMER_COMPLETE, func);
    timer.start();
}

function func(event:TimerEvent){
timer.removeEventListener(TimerEvent.TIMER_COMPLETE, func);
todo here
}