adobe air AS3:如何 运行 workers_ Multithreading 中的函数(由 Workers 提供)

adobe air AS3 :How to run a function in workers_ Multithreading (by Workers)

我有一个繁重的功能不适合在主时间线上执行(因为它需要很长时间才能完成并导致程序崩溃)。 因此我在 air(as3) 中搜索了多线程,但我找到的所有示例都解释了如何 运行 在 worker 中分离 swf 文件。我如何 运行 worker(线程)中的函数?

官方 worker 文档(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Worker.html):每个额外的 worker 都是从一个单独的 swf 创建的。

因此,您要么将繁重的代码安排为额外的 SWF,要么对其进行重构,以便您可以暂停和恢复它并将其执行分散到多个帧(ENTER_FRAME 事件,而不是时间轴帧,ofc ).

P.S。在同一个文档页面上,有一种方法可以在两个工作程序中 运行 主 SWF,因此您可以将其分叉到控制应用程序和工作程序应用程序中。

 // The primordial worker's main class constructor
 public function PrimordialWorkerClass()
 {
   init();
 }

 private function init():void
 {
   var swfBytes:ByteArray = this.loaderInfo.bytes;

   // Check to see if this is the primordial worker
   if (Worker.current.isPrimordial)    
   {
     // create a background worker
     var bgWorker:Worker = WorkerDomain.current.createWorker(swfBytes);

     // listen for worker state changes to know when the worker is running
     bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler);

     // set up communication between workers using 
     // setSharedProperty(), createMessageChannel(), etc.
     // ... (not shown)

     bgWorker.start();
   }
   else // entry point for the background worker
   {
     // set up communication between workers using getSharedProperty()
     // ... (not shown)

     // start the background work
   }
 }