2010-11-10 2 views
2

Можно ли передавать встроенные объекты JavaScript, такие как массивы и объекты с хэш-картами, в Flash Player с SWFObject?Сложные объекты FlashVar с использованием SWFObject?

я в основном нужно передать массив объектов Flash с JavaScript в Flash-переменных, так что это мой код:

swfobject.embedSWF("application.swf", "divvy" "100%", "100%", null, 
    { 'info': [ 
     { 'id': 1, 'name': "Hello, John" }, 
     { 'id': 2, 'name': "Hello, Dave" } 
    }]); 

Когда я получаю объект в Flex, я просто получить строку, которая выглядит например: «[Объект объекта], [Объект объекта]», который заставляет меня поверить, что мой массив сериализуется в String перед входом в Flash. Существует ли какое-либо известное обходное решение?

И да, мне нужно передать Flash-переменные таким образом, так как они отключают некоторую загрузку, что необходимо сделать до запуска приложения.

+1

Вам не нужно передавать Flash-переменные таким образом, и на самом деле вы не можете, по крайней мере, не так, как вы здесь показываете. То, что вы * можете * сделать, это позволить ему подключиться к серверу и получить данные, прежде чем вы сможете запустить приложение. Покажите индикатор выполнения, пока ваши данные не поступят. – Robusto

+0

Мертв, спасибо. Я забыл, что Flash vars - это просто переменные URL, а не фактические объекты JavaScript –

ответ

0

Ответ: как @Robusto, упомянутое выше , нельзя передавать встроенные объекты JavaScript Flash Player через Flashvars. Я забыл, что переменные Flash - это просто параметры GET для SWF, не более того. Таким образом, application.swf?r=123 - это то же самое, что и swfobject.embedSWF('application.swf', '100%', '100%', null, {'r': 123}, null);

Возможно, я просто загружу какой-либо XML или что-то в этом роде.

6

Используйте JSON lib от as3corelib и передайте весь объект, закодированный как объект json, и он станет флэш-объектом после его десериализации. Возможно, вам понадобится urlencode строку json, чтобы передать ее как строку, как только она попадет в as3, она будет де-urlencoded, и вы можете выполнить ее неэриализацию с помощью json-функции as3corelib, и у вас будет объект во флеше, который представляет ваши данные ,

2

Сложный объект должен быть отправлен в виде строки с помощью flashvars, тогда вы можете использовать анализатор JSON as3corelib для его чтения.

В качестве альтернативы вы можете использовать ExternalInterface, чтобы вызвать функцию javascript, чтобы вернуть объект как есть.

Как было предложено в комментариях, вы могли бы запросить Flash данные с самого сервера, есть много способов сделать это.