flex中有睡眠功能吗?

时间:2012-03-21 10:07:47

标签: flex actionscript

我希望我的代码在执行前等待几秒钟。那么在flex中有没有类似于sleep的函数?

4 个答案:

答案 0 :(得分:16)

ActionScript中没有睡眠或延迟功能。与JavaScript一样,您可以使用setTimeout()代替:

function trigger():void { setTimeout(doIt, 1000); }
function doIt():void    { Alert.show("done!"); }

trigger()功能链接到任何事件(例如“点击”)后,当事件发生时,警告框将在1秒后显示。

您还可以使用setInterval()clearlnterval()个功能进行重复。但是,建议在这种情况下使用flash.utils.Timer类。

private var myTimer:Timer;

private function init():void {
    myTimer = new Timer(5000, 1);
    myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timerHandler);
    myTimer.start();
}

public function timerHandler(event:TimerEvent):void {
    Alert.show("I was delayed!");
}

答案 1 :(得分:2)

它总是取决于你想要做什么。

我看到你正在使用Flex。 Flex中有一个简洁的功能叫做callLater,它在UIComponent中实现。它与使用中的setTimeout类似,但该函数将在下一个更新周期自动调用,而不是设置的时间间隔。假设您将一些数据设置为数据网格以及选择其中的特定单元格/行的内容。您将使用callLater确保数据网格有时间处理数据。这是一个例子:

protected function dummy():void
{
    myComponent.callLater(myFunction, ["this is a message"])
}

protected function myFunction(message:String):void
{
    Alert.show(message);
}

如果您只想延迟一次执行,那么setTimeout就是您的选择。如果要以定义的间隔执行多次操作,请确实使用Timer。

如果要对某些操作做出反应,比如远程保存功能,我建议你改用事件,然后听SAVE_COMPLETE事件。

答案 2 :(得分:2)

ActionScript中没有睡眠功能。一切都在一个线程中运行,因此它也会阻止所有用户界面交互,这通常被视为一种糟糕的方式。

最接近的选项是使用Timer类,该类只能在相关函数中启动,并在完成2秒等待后“激活”您想要等待的代码。

功能:

private function whereWeStartTimer():void{
    //misc code that you always execute before starting your timer

    var timer:Timer = new Timer(2000); // 2 second wait
    timer.addEventListener(TimerEvent.TIMER,functionTimerFlagged);
    timer.start();
}

private function functionTimerFlagged(event:TimerEvent):void{
    var targetTimer:Timer = event.target as Timer;
    targetTimer.removeEventListener(TimerEvent.TIMER,functionTimerFlagged);
    targetTimer.stop();

    //put your code here that you wanted to execute after two seconds

    //force-ably destroy timer to ensure garbage collection(optional)
    targetTimer = null;
}

答案 3 :(得分:0)

如果我必须按以下条件执行定时器按钮怎么办? 我有一个地图点击事件,它在地图窗口显示信息。我需要在中间从DB获取信息。现在要在弹出的信息中显示获取的信息,需要时间。

我认为在地图点击和信息弹出之间诱导睡眠或计时器会更好,这样就可以显示获取的数据。