有没有办法让我的功能延迟 3 秒。除了等待 3 秒然后执行一个函数,我希望它等待 3 秒然后执行它会在 3 秒前完成的函数。
我可能在最后一句话中没有意义,但这里有一个例子:
前任。走路,然后你有一个追随者做你做的完全一样的事情,除了延迟 3 秒。
提前致谢。
有没有办法让我的功能延迟 3 秒。除了等待 3 秒然后执行一个函数,我希望它等待 3 秒然后执行它会在 3 秒前完成的函数。
我可能在最后一句话中没有意义,但这里有一个例子:
前任。走路,然后你有一个追随者做你做的完全一样的事情,除了延迟 3 秒。
提前致谢。
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
对象。
(不过,您仍然可以在匿名函数中指定要传递给延迟函数的参数。)
触发后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
}