Хотелось бы приподнять данную тему дабы новую не открывать.
Столкнулся с такой же проблемой. Создал локальное приложение AIR (Флеш) - грузит в себя флешку через Loader и добавляет его на сцену (все ОК, грузит). Загружаемая в AIR флешка создана мною как Web приложение написанное на Flex. Теперь из AIR приложения в загруженную SWF нужно передать параметр (текст или массив), обработать его там и вывести в этой же флешке результат.
Для чего мне это нужно. В AIR (Флеш) нет компонента Tree (древовидное отображение массива). А мне он нужен. К сожалению не разобрался как воспользоваться сторонними реализациями Tree компонента под флеш, поэтому решил попробовать подгрузить Flex флешку.
Воспользовался LocalConnection для связи AIR с SWF. Если не вгружать SWF в AIR, то все работает, параметр передается, связь удачна. Проблемы начинаются с загрузкой swf в AIR
В общем код AIR который делает запрос в загруженный swf:

Код AS3:
//обработчик события нажатия на кнопку, что грузит swf-файл
// глобальная область объявления переменных
private var loader:Loader;
private var lc:LocalConnection;
private function on_statButton_ButtonMouseCLICK_Handler(event:MouseEvent):void
{
loader = new Loader();
var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
// пробовал и так:
// context.securityDomain = Security.sandboxType == Security.REMOTE ? SecurityDomain.currentDomain : null;
myrequest = new URLRequest('treeView_folder\\treeW.swf');
loader.load(myrequest, context);
loader.x = 70;
loader.y = 100;
myForm.addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLICompleteHandler);
}
protected function onLICompleteHandler(event:Event):void
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLICompleteHandler);
lc = new LocalConnection();
lc.addEventListener(StatusEvent.STATUS, onLCSTATUS_Handler);
lc.send('app#myApp.tech:_treeConnection', '_setParam', 'параметр передан, успех');
trace(lc.domain); // выдает --> app#myApp.tech
}
protected function onLCSTATUS_Handler(event:StatusEvent):void
{
lc.removeEventListener(StatusEvent.STATUS, onLCSTATUS_Handler);
switch (event.level) {
case "status":
trace("LocalConnection.send() succeeded");
break;
case "error":
trace("LocalConnection.send() failed");
// Постоянно выбивает сюда, ошибка соединения
break;
}
}
Код загружаемого swf (Flex) в AIR:

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="840" minHeight="600" backgroundColor="#666633"
applicationComplete="init()">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private var lc:LocalConnection = new LocalConnection();
private function init():void
{
lc.client = this;
lc.addEventListener(StatusEvent.STATUS, onLCStatus);
lc.allowDomain('*');
try{
lc.connect('_treeConnection');
Alert.show('lc.domain'); // После загрузки в Air выдает app#myApp.tech - тоесть домены одинаковые
}catch(error:ArgumentError){
Alert.show("Error: It can not connect your correct domain.");
}
}
public function _setParam(par:String):void
{
label_1.text = par;
}
protected function onLCStatus(event:StatusEvent):void
{
switch (event.level) {
case "status":
label_1.text = "LocalConnection.send() succeeded";
break;
case "error":
label_1.text = "Cant connect...the connection name is already being used by another SWF";
break;
}
}
]]>
</fx:Script>
<mx:Tree x="24" y="22" width="280" height="319" contentBackgroundColor="#A0A086"
dataProvider="{Передам сюда массив в будуущем}" labelField="@label"></mx:Tree>
<s:Label id="label_1" x="328" y="26" />
</s:Application>
В первой части блока с кодом AIR приложения пытался разрешения давать:

Код AS3:
try {
Security.allowDomain("app#myApp.tech");
}
catch (e:Error)
{
trace(e.message);
// Error #3207: Application-sandbox content cannot access this feature.
};
До того как задать вопрос пошастал по подобным темам у нас на форуме, за рубежом, но видимо не понял как решить проблему.
Подскажите пожалуйста, где я ошибся и что поправить?
.
Добавлено через 24 часа 7 минут
Ошибку выявил.. команда загруженной флешке посылалась раньше чем она грузилась полностью.. Решение: поставил таймер на 1 секунду по завершению загрузки в обработчик события onLICompleteHandler. Команда send посылается при срабатывании события TIMER.
Поговорил сам с собой, спасибо мне ))