Есть ли способ передать свойство со страницы HTML в приложение Flash, созданное с помощью Flex? - PullRequest
1 голос
/ 12 мая 2011

Я хочу указать строковое значение в HTML, содержащем мой Flash, созданный с помощью Flex 3. Это значение является URL-адресом, который используется кодом Flex, и я хочу, чтобы другой разработчик мог его обновить.Как мне это сделать?Я использую Flex Builder 3.

Ответы [ 3 ]

7 голосов
/ 12 мая 2011

Вы можете попробовать javascript и ExternalInterface или просто использовать flashVars

Если у вас есть только один параметр, который вы хотите передать, вероятно, прощеиспользовать flashVars.

0 голосов
/ 05 июля 2016

Как отметили Алекс Джиллард и Марти, вы можете использовать flashvars для передачи данных в приложение Flash. Однако этот подход жизнеспособен, только если данные, которые вы хотите передать, существуют во время загрузки приложения.

Если вы хотите передать данные в приложение Flash в любой момент в течение срока службы приложения, вы можете сделать это, создав для этого метод в приложении, добавив метод к ExternalInterface приложения (о котором Алекс упомянул). ), а затем вызовите этот метод с помощью Javascript.

Предполагая, что приложение Flash представлено в HTML как элемент DOME с именем flashDOMElement, а вышеупомянутый метод называется acceptData, вы можете добавить метод во внешний интерфейс приложения следующим образом:

//ActionScript
ExternalInterface.addCallback("acceptData");

И вызвать метод, используя элемент DOME следующим образом:

//Javascript
flashDOMElement.acceptData(/*arg1, arg2, ... */);

Причина, по которой вы хотите сделать это (сделать данные доступными для изменения другим разработчиком), заставляет меня поверить, что вы, возможно, захотите сохранить такие данные, как только приложение Flash получит их. Вы можете сделать это с Локально общими объектами.

Если мои предположения верны, BakedGoods - это решение, к которому вы можете обратиться. Это библиотека Javascript, которая устанавливает единый интерфейс, который можно использовать для выполнения общих операций хранения во всех собственных и некоторых не собственных средствах хранения, включая Flash Local Local Shared Objects.

С его помощью можно создать LSO с помощью простого кода:

bakedGoods.set({
    data: [{key: "key", value: "value"}],
    storageTypes: ["flash"],
    complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});

Ради полной прозрачности, BakedGoods поддерживается не кем иным, как этим парнем прямо здесь :).

0 голосов
/ 12 мая 2011

FlashVars будет самым простым решением для этого.

Код для вставки SWF:

<object width="300" height="250">
    <param name="flashvars" value="var1=hello&var2=world" />
    <embed src="file.swf?var1=hello&var2=world" width="300" height="250" />
</object>

Доступ к переменным из AS3:

var ext:Object = root.loaderInfo.parameters;

// ext.var1 -> hello
// ext.var2 -> world
...