Как передать переменную из swf-файла в as-файл?

#flash #actionscript-3

#flash #actionscript-3

Вопрос:

У меня есть main в .as, и я загружаю .swf в свой .as.Все работает нормально, теперь я хочу взять переменную из .swf и передать ее в .as. Как я могу это сделать? пожалуйста. помогите! Моя кодировка файла .swf

 function formatMessage(chatData:Object)
{
var number:uint = chatData.user;
trace(chatData.user);
}
private function addText()
    {
_loader = new Loader();
_loader.x=10;
_loader.y=200;
_loader.load(new URLRequest("receive.swf"));//Here i Can Load the Swf.Here how Can i acces  the Variable of number ?
 addChild(_loader);
    }
 

Комментарии:

1. Эта переменная является DisplayObject?

Ответ №1:

Первое, что нужно иметь в виду, это то, что это не будет работать в версиях виртуальной машины ActionScript. Это означает, что только AVM2 и AVM2 могут осуществлять связь (это возможно между AVM1, но требует большей изобретательности).

Добавьте прослушиватель событий завершения в _loader.contentLoaderInfo свойство, вызываемое onLoad

 _loader.x=10;
_loader.y=200;
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad);
 

Теперь с onLoad помощью функции нужно будет извлечь загруженное содержимое и немного выполнить кастинг.

 function onLoad(evt:Event):void {
    var target:DisplayObject = LoaderInfo(evt.target).content as DisplayObject; // cast as DisplayObject
    trace("readMe = ", target["your_variable"]); // trace output "your_variable"
}
 

Существуют более чистые формы выполнения этого, но это позволит вам извлечь значение из вложенного SWF.

Комментарии:

1. сэр, я не использовал вложенный swf. просто я добавляю свой swf в файл .as, моя цель — получить переменную из .swf

2. @user993437 — Выполняется ли ваш файл ActionScript? Да, это так. Когда вы выполняете ActionScript, вы выполняете его как SWF (или в FLA, который, в свою очередь, является SWF при компиляции). С помощью этой логической линии ваш скомпилированный SWF-файл загружает другой вызываемый SWF reciever.swf -файл. Этот метод загрузки одного SWF-файла в другой называется вложением. Вы можете придумать свою собственную терминологию, но в данном случае это вложенность.

3. Спасибо, сэр, это очень полезная информация. я использую Flash Builder si, я не могу отследить значение. Можно ли добавить текст в addchild()?

4. Вы можете создать текстовое поле, добавить его в сцену, а затем задать текстовое значение. Кроме того, вот совет по отладке livedocs.adobe.com/livecycle/8.2/programLC/programmer/lcds /…

5. Привет, Джон Джотта, у меня небольшая проблема, я объявил переменную (число) внутри FormatMessage (chatData:Object). Я не могу получить доступ к номеру, если я объявляю его вне функции, которая работает. Что я могу сделать? Как я могу исправить эту проблему?

Ответ №2:

DisplayObjectContainer(_loader.content).getChildByName(«someName»);

Переменная someName должна быть общедоступной, объявленной в основной временной строке или главном файле.

Комментарии:

1. 1061: Вызов возможно неопределенного метода getChildByName через ссылку со статическим типом flash.display:DisplayObject . _loader.content.getChildByName(«chatSharedObjectName»); при добавлении этого кода я получаю ошибку, подобную этой, сэр.

2. DisplayObjectContainer(_loader.content).getChildByName(..)