Отправить массив из Flash (AS3) в JavaScript - PullRequest
8 голосов
/ 29 июня 2009

Можно ли отправить массив из Flash (AS3) в JavaScript с помощью вызова ExternalInterface?

В настоящее время я вызываю функцию несколько раз из цикла «для каждого» во Flash, но JavaScript идет слишком быстро, чтобы не отставать.

Моя идея состоит в том, чтобы создать массив атрибутов, передать его функции JavaScript, а затем выполнить цикл в JavaScript.

Спасибо, Джош

Ответы [ 3 ]

8 голосов
/ 30 июня 2009

Да, это возможно.

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html#call()

... arguments - Аргументы для передачи к функции в контейнере. Вы можно указать ноль или более параметров, разделяя их запятыми. Они могут быть любого типа данных ActionScript. когда вызов функции JavaScript, типы ActionScript автоматически конвертируется в Типы JavaScript; когда вызов какой-то другой контейнер ActiveX, параметры закодированы в запросе сообщение.

Быстрый тест:

AS код:

if(ExternalInterface.available) {
    ExternalInterface.call("jsTest", [0,1,"two",{a:1,b:2}]);
}

JS код:

function jsTest(arg) {
    alert(arg);
}
7 голосов
/ 29 июня 2009

В дополнение к предложению использовать JSON, это должно быть быстрее для небольших массивов и не требует использования eval или внешней библиотеки для анализа. Соедините массив в строку, как это во флэш-памяти:

item1 | item2 | item3 | item4

Передайте строку в JS и снова разделите ее, используя split ("|")

6 голосов
/ 29 июня 2009

Вы всегда можете создать объект JSON и передать его в JavaScript.

...