Flex 3是否支持线程化?如果是这样,我可以查看任何示例或链接吗?
答案 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及更高版本增加了对多线程的支持。