2013-08-03 14 views
5

Z jakiegoś powodu, gdy próbuję odebrać właściwość współużytkowaną z Worker (w AS3), wynik jest zawsze pusty. Oznacza to, że wysyłam wartość do Worker przy użyciu setSharedProperty(), gdy pobieram ją za pomocą getSharedProperty(), zawsze zwraca ona undefined/null.Pracownik uzyskuje wartość pustą podczas pobierania właściwości wspólnej

Oto prosty test skonfigurować:

package 
{ 
    import flash.display.Sprite; 
    import flash.system.Worker; 
    import flash.system.WorkerDomain; 

    public class Main extends Sprite 
    { 
     private var _worker:Worker; 

     public function Main():void 
     { 
      if (Worker.current.isPrimordial) 
      { 
       initMain(); 
      } 
      else 
      { 
       initWorker(); 
      } 
     } 

     private function initMain():void 
     { 
      _worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes); 

      _worker.setSharedProperty("message", "test"); 
      _worker.start(); 
     } 

     private function initWorker():void 
     { 
      _worker = Worker.current; 

      var message:String = _worker.getSharedProperty("message"); 

      trace(message); 
     } 

    } 

} 

Kiedy prześledzić message, wynik jest zerowy. Chociaż moim głównym celem jest stworzenie aplikacji AIR, otrzymuję taki sam wynik, niezależnie od tego, czy kompiluję dla środowiska AIR (3.7) czy Flash Player (11.6, z jakiegoś powodu 11.7 nie rozpoznaje flash.system.Worker jako właściwej klasy) .

Kompiluję używając Flex SDK, przez FlashDevelop. Czy ktoś wie, co jest nie tak, może przeoczyłem coś w moim kodzie?

+1

Nie mam odpowiedzi na twoje pytanie ain problem, ale problem z Flash 11.7 nie rozpoznający klas może być spowodowany twoją playerglobal.SWC lub wersją SWF, która jest kompilowana. Obecna wersja SWF wydaje się mieć 19, być może trzeba będzie podać taką, która zawiera funkcjonalność 'Worker'. –

+0

Ah, dzięki za to. Po aktualizacji FlashDevelop (która również aktualizuje pakiety Flex i AIR SDK), kompiluje się teraz do wersji 11.7. Główny problem nadal jednak istnieje. – puggsoy

+0

Dodaj 'trace (_worker.getSharedProperty (" message "))' zaraz po '_worker.setSharedProperty (" message "," test ")'. Czy otrzymujesz wtedy nieruchomość? Jeśli nie, nie ma potrzeby nawet omawiać funkcji 'initWorker', ponieważ możemy ustalić, że problem zaczyna się wcześniej. –

Odpowiedz

1

FlashDevelop wydaje się teraz mieć pełne wsparcie dla debugowania pracowników, co tak naprawdę nie było w przypadku starszych wersji (nie można było ani złamać, ani śledzić wewnątrz pracowników). AIR SDK wsparcie pracownicy również postępują (pamiętam rzeczy pracujących w wydaniu pęknie w wersji debug) Właśnie zrekompilowane swoją próbkę z AIR SDK 14 Wydanie (14.0.0.110)

air14_sdk_win/bin/mxmlc -swf-version=25 -debug=true Main.as 

i debugowania to Shockwave Flash Debugger 14,0,0,125 i FlashDevelop 4.6.1.30 i dostał oczekiwany wynik:

[Starting debug session with FDB] 
Created Worker 2 
test 

Pamiętaj, że każdy element nie może spowodować up-to-date w swoim łańcuchu debugowania (SDK/player/debugger) problemy do debugowania pracownicy

+1

Ach, dobrze wiedzieć! Obecnie nie używam Flasha, ale doceniam twoją odpowiedź tak samo! Ponieważ nie ma nic lepszego do zrobienia, przypuszczam, że zaznaczę to, aby pokazać, że problem został rozwiązany, nawet jeśli to technicznie nie odpowiada na pytanie (po prostu powiadamia mnie o poprawce). – puggsoy

Powiązane problemy