Как вызвать функцию в SWF-файле AS2, размещенном в SWF-файле AS3, и вернуть массив обратно в SWF-файл AS3? (используя SwfBridge) - PullRequest
0 голосов
/ 22 мая 2009

У меня есть Flash CS4 AS3 swf (хост), который загружает Flash 8 AS2 swf (клиент), используя swfBridge от gSkinner.

Это прекрасно работает, и Хост может без проблем вызывать функции в клиенте. Однако я хочу иметь возможность вызывать функцию в клиенте и заставить эту функцию возвращать массив хосту.

Это код, который я думал, будет работать -

Код хоста (AS3) -

var hostArray:Array = new Array();
hostArray = mySwfBridge.send("getArray");

Код клиента (AS2)

var theArray = new Array("item1, item2, item3);
function getArray() :Array {
    return theArray;
}

есть идеи?

1 Ответ

2 голосов
/ 23 мая 2009

Проблема, с которой вы столкнулись, заключается в том, что LocalConnection (используется SwfBridge) выполняет асинхронные вызовы. Другими словами, выполнение скрипта вызывающей стороны не остановит его выполнение, чтобы дождаться результата от вызванной функции.

Если вам нужно получить значение с другой стороны LocalConnection, вам нужно настроить его на работу в двух направлениях. т. е. ваш клиентский скрипт должен отправить свой результат обратно в метод обратного вызова на хост-объекте через LocalConnection (* в данном случае SwfBridge) вместо того, чтобы делать это через return.

...