Какие ограничения / обходные пути необходимы для сторонних внешних SWF - PullRequest
0 голосов
/ 20 июня 2009

Мы загружаем внешний SWF-контент в Adobe Air. Контент предоставляется все большим числом третьих лиц.

Будучи сторонним контентом, он будет загружен в отдельный домен безопасности (trustContent = false) и домен приложения одного уровня (loadForCompatibility = true). Мы делаем это с помощью класса Loader.

Какие функции / опции / подходы могут вызвать проблемы при использовании SWF в качестве внешнего контента?

Меня интересуют любые проблемы, поскольку мы уже воспроизвели проблемы с контентом, которые возникают независимо от домена приложения / домена безопасности, в который он загружен (и также возникает как в Loader, так и в SWFLoader).

Любые обходные пути для решения проблем высоко ценятся, особенно те, которые можно применять из основного приложения.

Ответы [ 2 ]

1 голос
/ 20 июня 2009

Большой неприятной проблемой (с которой мы много раз сталкивались!) Является тот факт, что внешним SWF-файлам просто нельзя напрямую доверять. Когда-либо. Это в лучшем случае затрудняет связь между ними и базовым приложением AIR.

В связи с этим существует хак, который загружает данные SWF-файла через URLLoader, а затем берет из него байт-массив и закачивает его в Loader. Тем не менее, я считаю, что взлом был убит с AIR 1.5.1.

При этом между приложением AIR и загруженным SWF-файлом можно обмениваться данными через то, что Adobe называет «песочницей». Тем не менее, установка моста для песочницы является непростой задачей, и любые сложные данные (объекты, даже такие простые, как массивы) разбираются на общие объекты на другой стороне моста и не могут быть возвращены к их первоначальной форме. *

Для наших недавних проектов, в которых нужно было использовать мост, мы создали специальный класс под названием AIRBridge, который вы используете по обе стороны моста, и это облегчает правильную настройку всего. Если вам интересно, вы можете получить текущий источник из нашего проекта Google Code Automata-Tools .

0 голосов
/ 20 июня 2009

Тот, к которому мы уже обратились:

  • Содержимое за пределами внешнего этапа SWF отображается в приложении, и при установке размера, в котором оно будет отображаться, элементы за сценой учитываются. Обходной путь: Добавьте маску в основное приложение, чтобы внешний контент был скрыт. Используйте .content.width / height (полный с элементами вне сцены) и .content.loaderInfo.width / height (исходный размер сцены), чтобы вычислить, как масштабировать содержимое, чтобы исходный этап соответствовал видимой области.
...