Flex 3是否支持线程化?

时间:2011-04-12 08:36:58

标签: actionscript-3 flex flex3

Flex 3是否支持线程化?如果是这样,我可以查看任何示例或链接吗?

4 个答案:

答案 0 :(得分:6)

在某些地方,在Adobe中,Flash Player确实支持多线程... http://www.bytearray.org/?p=3007。它还没有公开发布。

除此之外,请参阅Multithreading or green threading in actionscript?互联网上还有一个关于使用Pixel Bender的多线程进行数据处理的few articles

答案 1 :(得分:4)

如Alex here所述:

  如果你花很多时间做重,那么

Actionscript是单线程的   计算,当你这样做时,UI无法更新   计算,以便你的应用程序卡住或效果不运行   顺利。

     

同样,在Actionscript中也没有屈服或阻塞。如果   下一行代码应该运行,你不能阻止下一行   来自运行的代码行。这意味着当你调用Alert.show()时,   紧随其后的下一行代码就会立即运行。

     

在许多其他运行时,必须先关闭“警报”窗口   下一行代码继续。线程可能是一个特征   有一天行动脚本,但在那之前,你必须忍受这个事实   现在没有这样的事情了。

答案 2 :(得分:4)

ActionScript 3是单线程的。

你可以做的是将切片工作切成小到足以使响应性不受影响的切片。例如:

private var _long_process_work_object:LongProcessWorkClass;
private var _long_process_timer:Timer;

private function startSomeLongAndIntensiveWork():void
{
    _long_process_work_object = new LongProcessWorkClass();

    _long_process_timer = new Timer(10);
    _long_process_timer.addEventListener("timer", longProcessTimerHandler);
    _long_process_timer.start();
}

private function longProcessTimerHandler(event:TimerEvent):void 
{
    _long_process_timer.stop();

    // do the next slice of work:
    // you'll want to calibrate how much work a slice contains to maximize 
    // performance while not affecting responsiveness excessively
    _long_process_work_object.doSomeOfTheWork();

    if (!_long_process_work_object.Done) {
        // long process is not done, start timer again
        _long_process_timer.start();
        return;
    }

    // long process work is done, do whatever comes after
}

答案 3 :(得分:0)

Flex 3基于ActionScript 3. ActionScript 3不支持多线程(您无法编写针对多线程执行的代码)。 已编译的Flex应用程序在Flash Player平台上运行。 Adobe Flash Player 11.4及更高版本增加了对多线程的支持。