Multithreading AdobeAIR AS3:如何在workers\多线程(由workers)中运行函数

Multithreading AdobeAIR AS3:如何在workers\多线程(由workers)中运行函数,multithreading,actionscript-3,flash,air,adobe,Multithreading,Actionscript 3,Flash,Air,Adobe,我有一个很重的函数,不适合在主时间轴中执行(因为它需要很长时间才能完成,并且会使程序崩溃)。 因此,我搜索了air中的多线程(as3),但我找到的所有示例都解释了如何在worker中运行单独的swf文件。如何在worker(线程)中运行函数?正式worker文档():每个额外的worker都是从单独的swf创建的 因此,您可以将繁重的代码安排为一个额外的SWF,或者重构它,以便可以暂停和恢复它,并将其执行扩展到多个帧(输入帧事件,而不是时间线帧,ofc) 另外,在同一个文档页面上,有一种方法可以

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

正式worker文档():每个额外的worker都是从单独的swf创建的

因此,您可以将繁重的代码安排为一个额外的SWF,或者重构它,以便可以暂停和恢复它,并将其执行扩展到多个帧(输入帧事件,而不是时间线帧,ofc)

另外,在同一个文档页面上,有一种方法可以在两个worker中运行主SWF,这样您就可以将其分为控制应用程序和worker应用程序

 // 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
   }
 }

感谢亲爱的Organia,我是伊朗用户,adobe已经屏蔽了我们的ip,请您发布一个“在两个工人中运行主SWF”的示例。您可能还想使用一些在线匿名代理,这将为您解决不便的堵塞问题。@AmirRasti如果您使用Chrome浏览器,请尝试一个名为UltraSurf VPN的扩展。也可以使用AdBlock。然后你可以看到世界上任何一个网站都没有被封锁。