2015-04-04 12 views
-1

Я использую Flash Builder 4.7 и создал Рабочий класс. Ниже приведен код:Как получить доступ к родительским или оберточным переменным из класса рабочего класса AS3

package co.fuix.mobile.system.model 
{ 
    import flash.display.DisplayObjectContainer; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.system.MessageChannel; 
    import flash.system.Worker; 
    import flash.utils.getDefinitionByName; 

    import mx.managers.SystemManager; 

    public class InstantMessengerWorker extends Sprite 
    { 

     private var bm:MessageChannel; 
     private var mb:MessageChannel; 
     public function InstantMessengerWorker() 
     { 

      super(); 

      bm = Worker.current.getSharedProperty("BACK_TO_MAIN_CHANNEL"); 
      mb = Worker.current.getSharedProperty("MAIN_TO_BACK_CHANNEL"); 
      mb.addEventListener(Event.CHANNEL_MESSAGE, onMainToBack); 

     } 

     protected function onMainToBack(event:Event):void 
     { 
      if(mb.messageAvailable){ 
       var s:SystemManager; 
       trace('*'+mb.receive()); 
       trace('**'+mb.receive()); 
       trace('***'+mb.receive()); 
       trace(mx.core.FlexGlobals.topLevelApplication.myVariable); 
      } 
     } 
    } 
} 

Как ссылаться на переменную в основном файле mxml. Я знаю, как использовать каналы сообщений, но я хочу получить эту переменную прямо.

Когда я запускаю приведенный выше код, то эта часть

trace(mx.core.FlexGlobals.topLevelApplication.myVariable); 

дает мне ошибку.

Любая помощь будет оценена regreatly

+0

'«дает мне ошибку»' Что ошибка? – Brian

ответ

0

Вы не можете получить доступ к переменной из основного приложения, как это. Они работают отдельно. Что вам нужно сделать, это:

Link to Adobe docs

+0

Спасибо @ jason-reeves за ваш ответ. По крайней мере, теперь я знаю, как это работает. Затем можно совместно использовать FlexGlobals.topLevelApplication так: 'worker.setSharedProperty (« FlexGlobalsObject », mx.core.FlexGlobals.topLevelApplication);' в главном SWF. Затем в рабочем я хочу получить доступ к свойству как «flexGlobalsProperty = Worker.current.getSharedProperty (« FlexGlobalsObject »);». В основном я хочу поделиться объектом FlexGlobals между swf. – Drmaposa

+0

нет, это не сработает. могут использоваться только простые объекты. В основном у вас есть два разных флеш-плеера, которые запускают и отправляют информацию туда и обратно через канал сообщения или общие свойства. Это не имеет аналогов и не может видеть в другом для ссылок ... только передавать сообщения туда и обратно (кроме ByteArray, который является общим). Ссылка, которую я вам дал, - это ТОЛЬКО способ обработки сообщений для работников. –

+0

Спасибо Джейсону. Теперь я понимаю. Единственное, что я недавно начал использовать Рабочих. ;) – Drmaposa

 Смежные вопросы

  • Нет связанных вопросов^_^