2013-08-03 20 views
5

Bir nedenle, Worker (AS3'te) paylaşılan bir özellik almayı denediğimde, sonuç her zaman sıfırdır. Ben getSharedProperty() kullanarak, her zaman undefined/null döndürür almak o zaman, ben setSharedProperty() kullanarak Worker bir değer göndermek vardır. Ben message iz zamanPaylaşılan özellik alınırken çalışan null alma

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); 
     } 

    } 

} 

, sonuç null:

Burada kurmak basit bir test. Ana amacım bir AIR uygulaması yapmak olsa da, AIR (3.7) veya Flash Player için (11.6, bir nedenle 11.7 geçerli bir sınıf olarak flash.system.Worker'ı tanımadığı için) derlerken aynı sonucu elde ediyorum. .

FlashDevelop aracılığıyla Flex SDK'yı kullanarak derliyorum. Neyin yanlış olduğunu bilen var mı, belki kodumda bir şey mi özledim?

+1

Senin m ain problemi, ancak Flash 11.7 sınıflarını tanımayan problem, playerglobal.SWC veya derlenmiş olan SWF sürümü nedeniyle olabilir. Mevcut SWF sürümü 19 gibi görünüyor, 'Worker' işlevini içeren birini belirtmeniz gerekebilir. –

+0

Ah, bunun için teşekkürler. FlashDevelop'u güncelledikten sonra (Flex ve AIR SDK'lerini de günceller), şimdi 11.7 için derler. Ancak asıl sorun devam ediyor. – puggsoy

+0

_worker.setSharedProperty ("message", "test") 'öğesinin hemen ardından' trace (_worker.getSharedProperty ("message")) ekleyin. O zaman mülkiyeti alır mısın? Aksi takdirde, problemin daha önce başlayacağını belirleyebildiğimiz gibi, initWorker işlevini bile konuşmaya gerek yoktur. –

cevap

1

FlashDevelop, artık eski sürümlerde gerçekte olmayan işçilerin hatalarını ayıklamak için tam bir desteğe sahip gibi görünüyor (işçilerin içinde ne kırılabildiğini ya da ne izleyeceğinizi). AIR SDK, işçiler desteği de (ben hata ayıklama sürümünde kıracak sürümde çalışan şeyleri hatırlamak) Sadece AIR SDK ile 14 salıverilmesini (14.0.0.110)

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

sizin numuneyi yeniden derlenmesi ve Shockwave Flash Hata onu debug ilerlemiştir 14,0,0,125 ve FlashDevelop 4.6.1.30 ve beklenen sonuç var:

[Starting debug session with FDB] 
Created Worker 2 
test 

herhangi eleman yukarı-güncel şekilde ayıklama zinciri (sdk/oyuncu/ayıklayıcı) 'de hata ayıklama için sorunlara neden olabilir değil dikkat işçiler

+1

Ah, bunu bilmek güzel! Şu anda Flash'ı fazla kullanmıyorum ama cevabını hepinize minnettarım! Yapacak daha iyi bir şey olmadığı için, bu sorunun teknik olarak cevaplanmasa bile, sorunun çözüldüğünü göstermek için bunu işaretleyeceğimi varsayalım. – puggsoy

İlgili konular