multithreading - 어도비 에어 AS3:근로자에서 기능을 실행하는 방법_멀티 스레딩(근로자 기준)



actionscript-3 flash (1)

나는 메인 타임 라인에서 실행하기에 적절하지 않은 무거운 기능을 가지고있다. (프로그램을 끝내고 충돌시키는 데 오랜 시간이 걸리기 때문이다.) 따라서 공기에서 다중 스레드 (as3)를 검색했지만 찾은 모든 예제에서는 작업자에서 별도의 swf 파일을 실행하는 방법을 설명했습니다. 작업자 (스레드)에서 함수를 실행할 수 있습니까?


공식 작업자 문서 ( http://help.adobe.com/ko_KR/FlashPlatform/reference/actionscript/3/flash/system/Worker.html ) : 각각의 추가 작업자는 별도의 swf에서 생성됩니다.

따라서 무거운 코드를 추가 SWF로 정렬하거나 리팩터링하여 일시 중지했다가 다시 시작하고 실행을 여러 프레임 (타임 라인 프레임, OFC가 아닌 ENTER_FRAME 이벤트)에 분산시킬 수 있습니다.

추신 : 동일한 문서 페이지에는 두 명의 작업자가 기본 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
   }
 }




adobe