Можно ли вставить существующий SWF-файл в приложение Air for iOS? - PullRequest
0 голосов
/ 01 марта 2012

У одного из моих клиентов много SWF, и он хотел бы перенести их на iPad. Однако у него есть только SWF, а не FLA.

Я хотел бы знать, если это способ запуска SWF-файлов в приложении Air для iOS. Я читал, что вы можете импортировать их тогда с помощью Loader, но они будут работать только как анимация, игнорируя весь код внутри них.

Спасибо, любая помощь приветствуется!

[ОБНОВЛЕНИЕ] Я прочитал кое-что об использовании SWC, но все еще не уверен, что они выполнят код.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2012

Обновление, октябрь 2012 г .:

В Adobe AIR 3.5 adl представляет функцию, называемую «поддержка нескольких SWF», которая позволяет использовать загрузчики для загрузки SWF-файлов, поставляемых в .ipa (локальные файлы, а не с серверов), чтобы иметь код в них. Компилятор adl AOT компилирует SWF-файлы, включенные в .ipa, что позволяет загружать их и работать под iOS.

На момент написания этой статьи AIR 3.5 в настоящее время находится в стадии бета-тестирования и доступна на сайте Adobe Labs:

Обратите внимание, что для этой функции требуется -swf-version = 18 или выше корневого SWF-файла (необязательно загружаемых ресурсов) и пространства имен AIR, заканчивающегося 3.5 в XML-файле приложения.

Предыдущий ответ:

Причина, по которой внешние SWF-файлы с кодом в не работает, заключается в том, что ADT-компилятор Air кросс-компилирует ваш корневой SWF-файл (и только ваш корневой SWF-файл) в код target-c, потребляемый устройством iOS. [Встроенные] SWF-файлы и включенные в .ipa (до версии AIR 3.5) не кросс-компилируются.

Я создал обходной путь для этой проблемы для встроенных ресурсов:

[Embed(source="gameLevel.swf")]
  private var gameLevel:Class;

 ...

 addChild(new gameLevel());

В этом сценарии, если в коде gameLevel.swf содержится код, он, как правило, не будет работать в iOS, поскольку новый gameLevel () будет создавать загрузчик и интерпретировать байт-код SWF. Но если вы сначала запустите вышеуказанный SWF-файл через мой инструмент SWFMerge, он возьмет встроенный SWF-файл и объединит его с корневым SWF-файлом. В результате ADT скомпилирует ваш встроенный код в target-C, он будет работать на iOS, и обратите внимание: новый gameLevel () теперь приводит к экземпляру вашего ресурса - НЕ к загрузчику.

Инструмент SWFMerge находится здесь:

http://www.onetacoshort.com/temp/SWFMerge_alpha.swf

LMK, если этот обходной путь работает для вас, или если у вас возникли проблемы. Ура!

-Джефф

1 голос
/ 01 марта 2012

Да, можно,

Apple не разрешает вашему приложению загружать SWF-файлы с помощью Loader из Интернета, но вам разрешено встраивать их в ваш .ipa

Для этого вы должны использовать тег для вставки

[Embed("myswf.swf", mimeType="application/octet-stream")] private var mySwf:Class;

Вы можете использовать

swf = new mySwf();
swf.addEventListener(Event.COMPLETE, completeHandler);

И взаимодействовать с swf внутри этого полного обработчика

Я хотел бы добавить к этому, что возможно скомпилировать SWF, который не может быть загружен

...