Adobe Labs に Flash Player と AIR のベータ版が公開されました。(Flash Player 11.9 ベータ@Labs, AIR 3.9 ベータ@Labs)
公開されているバージョンは以下の通りです。
- Flash Player : 11.9.900.85
- AIR : 3.9.0.720
Flash Player の主要な新機能は、以下の 2 つです。
- Mac OS 10.9 サポート
動作テストに加え、Mavericks の新機能 “App Nap” への対応なども追加 - Mac .pkg インストールのサポート
システム管理者向けに pkg フォーマットびインストーラーを提供
Flash Player は、引き続き Windows 8 (含モダン UI) と Windows RT もサポートします。Windows 8 & IE10 コンテンツのガイドラインはこちらの MSDN 記事に詳しく紹介されています。
AIR に関しては、以下のように今回比較的大きな機能追加が計画されているようです。
- Worker ベータ版の提供 (Android)
モバイル OS での並列処理の最初の試験的な実装、iOS も同様の機能を準備中
(今回提供される機能はあくまで試験的な位置づけ) - Direct 描画モードでのバックグラウンドでの実行 (iOS, Android)
アプリが表示されていない状態でもコードが実行できる - 新しい AOT コンパイラ (iOS)
アプリのコンパイル時間を大幅に短縮
(AIR 3.9 ではベータ扱いで、実際に使用できるのはそれ以降のバージョンになる予定) - XXHDPI アイコンのサポート
144 x 144 サイズのアイコンを使用できる - iOS 7 サポート
動作の互換性の確認 - Mac OS 10.9 サポート
新機能 "App Nap" などに対応
ベータ版は以下のページからダウンロードできます。
新機能を使うには SWF バージョンの指定を 22 にします。AIR に関しては名前空間の指定を 3.9 にするのもお忘れなく。
AIR の新機能のうち、Worker と AOT コンパイラは、まだ安定して使える状態には遠く、幅広いフィードバックを得ることが目的での公開のようです。Android 上の Worker について、今の時点で判明している制限としては、
- 5 つ以上の Worker を裏で実行するとクラッシュする
- Android 2.3.x では 3 つめの Worker を開始した時点でクラッシュすることもある
- デバッグ中は MESSAGECHANNEL イベントが直ぐに発行されない
等が報告されています。
モバイル AIR アプリの Direct 描画モードでの振る舞いの変更について
Direct は Stage3D を使用するアプリで使われる描画モードです。これまでのモバイル向け AIR アプリは、描画モードに Direct が指定されていると、バックグラウンド、つまり非表示の状態では、オーディオ再生や位置情報の更新処理などができませんでした。
なぜこのような仕様になっていたのかという話ですが、iOS では OpenGL ES のバックグラウンド実行中の呼び出しが禁止されているためだそうです。iOS では、バックグラウンドでの実行中に OpenGL を呼び出したアプリは終了させられるとのこと。
そこで、AIR 3.9 では、iOS のバックグラウンドでの実行中に OpenGL が呼び出されたらエラーとして扱うという処理が追加されたようです。新しく追加されたエラーは 3768 番です。
Android に関しては、特に禁止項目という訳でもないためか、エラー扱いは無く、そのまま実行されるようです。とはいえ、バックグラウンド実行中に OpenGL を呼ぶのはデバイスのリソースの無駄使いでしょうから、避けた方がよさそうです。
ということで、バックグラウンド実行中の使用を避けた方が良いと思われる API 一覧です。
Context3D.clear Context3D.present Context3D.createVertexBuffer Context3D.createIndexBuffer Context3D.drawToBitmapData IndexBuffer3D.uploadFromVector IndexBuffer3D.uploadFromByteArray VertexBuffer3D.uploadFromFloatVector VertexBuffer3D.uploadFromFloat4Vector VertexBuffer3D.uploadFromByteArray Program3D.upload Texture.uploadCompressedTextureFromByteArray Texture.uploadFromBitmapData Texture.uploadFromByteArray CubeTexture.uploadFromBitmapData CubeTexture.uploadFromByteArray CubeTexture.uploadCompressedTextureFromByteArray RectangleTexture.uploadFromBitmapData RectangleTexture.uploadFromByteArray
コメントする