0

У меня есть Flash CS4 AS3 swf (host), который загружает swf (клиент) Flash 8 AS2 swf (клиент) с помощью swfBridge gSkinner.Как мне вызвать функцию в swf AS2, размещенную в swf AS3, и вернуть массив обратно в AS3 swf? (используя SwfBridge)

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

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

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

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

Client (AS2) код

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

какие-либо идеи?

ответ

2

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

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

+0

Спасибо Тео, по методу обратного вызова, вы имеете в виду, что когда вызываемая функция завершилась, я просто вызываю функцию в исходном вызывающем абоненте для обработки того, что было бы отправлено оператором return. Я думал об этом, но думал, что это немного неопрятно ... если это единственный способ, хотя ... большое спасибо :) – undefined

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