Как известно, Adobe недавно представила релиз-кандидата AIR 3. Я недавно уже упоминал об этом в блоге. Ниже следует перевод статьи одного из разрабочиков Adobe, где он рассказывает о новых возможностях AIR 3.
while (this.numChildren > 0)
Adobe AIR прошел большой путь от версии 1.0, выпущеной в начале 2008. Были реализованы десятки крупных изменений и сотни более мелких, добавлена поддержка iOS (iPhone и iPad), Android и Adobe AIR для TV.
AIR 3 будет уже одиннадцатым нашим релизом менее чем за два с половиной года. Почти каждый крупный релиз был большим шагом вперед, но этот я считаю одним из наиболее значительных. AIR 3 включает в себя следующие новые возможности:
AIR 3 будет уже одиннадцатым нашим релизом менее чем за два с половиной года. Почти каждый крупный релиз был большим шагом вперед, но этот я считаю одним из наиболее значительных. AIR 3 включает в себя следующие новые возможности:
- Stage3D ( десктопы). Stage3D это набор низкоуровневых API для 2D и 3D рендернинга с аппаратным ускорением. Пока возможность доступна только для десктопов, но мы работаем над тем, чтобы она появилась и на мобильных платформах. Stage3D действительно крутая штука, поэтому если захотите узнать больше - вам сюда.
- Native extentions (все платформы). Еще одно серьезное улучшение. Начиная с AIR 3 у разработчиков есть возможность дополнять AIR так называемыми нативными расширениями (ANE), а затем вызывать их из ActionScript. Вы можете думать о native extentions как об ActionScript-библиотеках (SWC), но написаных на родном языке устройства. Таким образом появилась возможность использовать родные API устройства, не поддерживаемые непосредственно AIR, а также делегировать выполнение некоторых задач с целью повышения производительности. Чтобы получить больше информации, смотрите этот пост.
- Интеграция с Android Market licensing. Используя специальный файл native extention, разработчики получают доступ к Android Market Licensing Service позволяющму удостовериться в лицензионности запущенного пользователем приложения. Т.к. аналогичной возможности нет в iOS, нет смысла добавлять этот функционал непосредственно в AIR, однако он становится доступным благодаря native extentions.
- Captive runtime bundles (Android и десктопы). Вы можете избавить ваших пользователей от необходимости скачивать AIR, если он у них не установлен. AIR вживляется в ваше приложение и процесс установки ничем не отличающимся от установки родных приложений. Используйте флаг apk-captive-runtime у ADT, собирая Android-приложение или флаг bundle при сборке десктопного приложения. Заметим, что при сборке для iOS никаких дополнительных действий предпринимать не нужно, этот механизм (чуть модифицированый) там применяется по-умолчанию.
- Фоновое проигрывание аудио (новое в iOS, было в Android). В связи со специфичностью реализации многозадачности в iOS, ранее было невозможно проигрывать аудио из AIR-приложения, находящегося в фоновом режиме. Начиная с AIR 3 вы можете указать в дескрипторе приложения, что вашему приложению необходимо проигрывать аудио в фоне (приложение будет продолжать работать в фоновом режиме, за исключением обновлений экрана с целью продлить ресурс батареи)
- Поддержка CameraRoll в iPad. Технически CameraRoll (выбор изображения из библиотеки) и ранее поддерживалась для iPad, однако в AIR 3 это поддержка улучшена. На iPad выбор фото не занимает всю область экрана (как на iPhone и iPod touch), а отображается относительно элемента интерфейса вызвавшего его. Используйте новый класс CameraRollBrowseOptions для управления размерами и положением диалога (см. также этот пост об использовании CameraRoll на iPad)
- Аппаратное ускорение для видео (мобильные). AIR поддерживает аппаратное ускорение видео на десктопах с версии 2.5. В версии AIR 3 такая поддержка введена и для мобильных устройств.
- Родные текстовые поля (мобильные). Предыдущие версии AIR предоставляли разработчикам низкоуровневые возможности отображения содержимого с помощью StageVideo (видео с аппаратным ускорением), StageWebView (нативный HTML-рендеринг). AIR 3 добавил к этим возможностям StageText, позволяющий размещать родные для устройства текстовые поля, со всеми их специфическими возможностями (увеличительное стекло, проверка орфографии, выделение текста и т.п.)
- Поддержка фронтальной камеры (iOS и Android). В ActionScript с помощью класса Camera теперь можно получить доступ как к фронтальной, так и тыльной камерам. Возможность доступна в iOS и Android (не ниже 2.3). Используйте свойство Camera.position совместно с константами из CameraPosition (BACK, FRONT, UNKNOWN). Для более подробной информации смотрите этот пост.
- Шифрованное хранилище (мобильные и десктопы). API EncryptedLocalStore, доступное ранее на десктопах теперь есть и на iOS с Android. Это API является критичным в задачах хранения конфиденциальной информации, паролей, ключей и т.п.
- Управление источником звука (мобильные). У SoundMixer появился новый параметр audioPlayBackMode, принимающий константы из AudioPlaybackMode (MEDIA или VOICE). Таким образом теперь можно указать, откуда воспроизводить звук: из медиа-динамиков или голосового динамика (используемого при телефонном разговоре)
- Нативная поддержка JSON (мобильные и десктопы). Вместо ActionScript-парсинга JSON, теперь введена более эффективная его поддержка. Нативные API JSON быстрее и потребляют меньше памяти, чем ActioScript-реализации. Более подробная информация в этом посте.
- Улучшенные сокеты (мобильные и десктопы). При работе с сокетами разработчикам и ранее не составляло труда узнать когда и сколько данных из сети поступило в буфер (см. ProgressEvent.SOCKET_DATA и Socket.bytesAvailable). Однако, до выхода AIR 3 не было способа узнать сколько данных из буфера сокета отправлено в сеть и сколько еще ожидает отправки. Это приводило к тому, что разработчик не знал, завершена ли передача и когда можно безопасно вызвать close(). Теперь, используя OutputProgressEvent.OUTPUT_PROGRESS и Socket.bytesPending, можно создавать более надежные приложения. Подробнее об этом тут.
- H.264 кодирование видео (десктопы). Теперь видео, снятое серез Camera можно кодировать в H.264
- Поддержка JPEG XR (мобильные и десктопы). AIR 3 теперь поддерживает JPEG XR. Это новый формат, с рядом преимуществ перед JPEG. Он обладает лучшей степенью сжатия (как с потерями так и без), более точной цветопередачей и поддерживает прозрачность.
- Изображения произвольной величины (мобильные и десктопы). В предыдущих версиях AIR, изображения были ограничены 16 мегапикселями (16,777,215 пикселей), ширина/высота не могли превышать 8,191. Начиная с AIR 3 эти ограничения сняты полностью.
- Многоканальное аудио (AIR для TV). AIR для TV теперь может проигрывать аудиопотоки Dolby Digital Plus 5.1 Surround и DTS 5.1. Новые API для этой цели: Capabilities.hasMultiChannelAudio, AudioDecoder (содержит константы типов аудио), Capabilities.serverString.
- Расширенная поддержка контроллеров (AIR для TV). Применяя новое API GameInput, разработчики могут создавать игры, использующие джойстики, геймпады и т.п. Можно узнать, какие контроллеры доступны и какими органами управления они обладают
- Простое удаление всех детей из контейнера (все платформы). DisplayObjectContainer теперь содержит метод removeChildren(), позволяющий одним вызовом удалить всех детей. Ранее нужно было писать что-то вроде этого:
this.removeChildAt(0)
- Определение того, проигрывается ли MovieClip (все платформы). В MovieClip добавлено поле isPlaying, позволяющее определить проигрывается ли клип в данный момент.
- Советы сборщику мусора (все платформы). Новый метод System.pauseForGCIfCollectionImminent() дает разработчикам больше контроля над автоматическим сборщиком мусора. Т.к. анимация или аудио могут подтормаживать во время сборки мусора, разработчик может дать сборщику совет в какой момент лучше отработать, чтобы это было наименее заметно для пользователя
- Безопасный генератор случайных чисел (мобильные и десктопы). Хотя Adobe AIR с самого начала и содержал метод Math.random(), генерирующий “псевдослучайные” числа, т.е. хоть они и выглядят как случайные, но теоретически детерминированы. AIR 3 предоставляет еще один метод generateRandomBytes(), расположенный в пакете flash.crypto. Этот метод использует средства нижележащей платформы для генерации криптостойких случайных чисел (CryptGenRandom в Windows, /dev/random в OS X, /dev/urandom в Android, SecRandomCopyBytes в iOS)
- Кубические кривые Безье (все платформы). Новый метод cubicCurveTo() в классе Graphics позволяет рисовать кубичиские кривые Безье без использования сторонних библиотек.
Кандидат-релиз Adobe AIR 3 доступен для скачивания на Adobe Labs
Автор: Christian Cantrell
Перевод: Евгений "FlashBurn" Квасов

0 коммент.:
Отправить комментарий