Как человек, которому был предоставлен ранний доступ к экспорту родного приложения iPhone во Flash CS5, я надеюсь, что смогу предоставить немного информации об этом. Напомним, что одна из моих игр, созданных с использованием этой технологии, была представлена на конференции Adobe MAX 2009, поэтому общеизвестно, что я работал с ней, и я не нарушаю NDA, рассказывая о своем опыте, пока я придерживайтесь того, что Adobe уже раскрыла.
Во-первых, позвольте мне сделать одно важное замечание. Во многих случаях Flash может не подходить для того, что вы хотите создать. Например, 3D-игры и приложения, которые должны использовать собственные элементы управления UIKit, лучше, если они разработаны с использованием Objective-C или других языков, которые имеют доступ ко всем собственным встроенным возможностям и библиотекам устройства. Для правильного и опытного разработчика Flash может быть хорошим выбором.
Как и следовало ожидать, существует большая разница в возможностях процессора между настольным и мобильным устройствами. К счастью, в процессе преобразования ActionScript 3 проходит через компилятор на основе LLVM, который заранее оптимизируется в качестве встроенной сборки ARM для iPhone. В результате производительность кода не сильно страдает, если вообще. Большая часть моего кода из существующих проектов, которые я портирую на мобильные устройства, остается неизменной. Главным образом, мне нужно изменить дизайн визуального контента, чтобы он поместился на устройстве и сосредоточился на узких местах в программном рендере Flash. Даже на настольном компьютере средство рендеринга, вероятно, является основной стеной, с которой сталкиваются разработчики при использовании возможностей Flash Player.
К счастью, инженеры Adobe наконец-то изучают аппаратное ускорение (на самом деле видео ускоряется в плагине рабочего стола, но только в определенных конкретных ситуациях). Например, пока экранный объект остается статичным, его можно пометить для кэширования в виде поверхности и очень быстрого отображения на экране, поскольку он хранится в графической памяти. Другие интересные оптимизации могут быть сделаны для ускорения визуального контента, например, использование растровых изображений для замены экранных объектов, которые имеют фильтры (тени, свечение и другие подобные вещи). Подобные вещи могут улучшить производительность и на настольном компьютере, но ленивые разработчики не всегда делают то, что лучше, когда это выглядит «достаточно хорошо» на их собственных машинах. Некоторые из моих коллег считают такое изменение рабочего процесса неприемлемым, но я считаю, что это и пробуждение о том, насколько ленивыми стали некоторые из нас, и очевидное требование перехода на более ограниченную платформу.