Flash Player と AIR のバージョン 19 が公開されました。今回公開されたビルドは以下のリストのとおりです。
- Flash Player (一般) : 19.0.0.185
- Flash Player (Linux Firefox) : 11.2.202.521
- Flash Player (拡張サポート) : 18.0.0.241
- AIR SDK & ランタイム : 19.0.0.190
AIR 19 から iOS 9 がサポート対象に加わりました。今後、iOS 9 の機能に対応した新機能を追加することも検討されているようです。細かいところでは Stage3D のエラーメッセージが分かりやすくなりました。
新しい SWF のバージョンは 30 です。AIR の新機能を利用するには名前空間に 19.0 以上を指定します。
iOS 上での並列処理
iOS 関連では、ようやく Worker クラスが正式に使えるようになりました。これで、UI とロジックを別スレッドに分けるなど、他のプラットフォームと同様のコードが利用できます。
Android と iOS との間で、Worker で実行するコードを共有するのは可能ですが、iOS では動的にスクリプト入りの SWF ファイルの読み込みができないため、Embed タグを使って SWF を埋め込み、それを Worker に読み込んでコードを実行、という手段が使えません。
その代わりに、ByteArray を使って WorkerDomain クラスの createWorker() メソッドに SWF ファイルのデータを渡して Worker のインスタンスを生成します。以下は、Loader を使って外部の SWF ファイルを読み込む例です。URLLoader を使う方法もあります。
まず Loader のインスタンスを使って外部ファイルを読み込みます。
var _urlRequest:URLRequest = new URLRequest("BgWorkerSwf.swf"); var _loader:Loader = new Loader(); var _lc:LoaderContext = new LoaderContext (false, ApplicationDomain.currentDomain, null); _loader.contentLoaderInfo.addEventListener (Event.COMPLETE,completeHandler); _loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR,errorHandler); _loader.load(_urlRequest, _lc);
読み込みが完了したら、COMPLETE イベントハンドラー内で Woker のインスタンスを作成します。
private function completeHandler(e:Event):void { worker = WorkerDomain.current.createWorker(e.target.bytes); //以下必要な処理をしてからworkerを開始 }
上のコードは Loader の load メソッドから呼び出されるため、バックグラウンドで実行される Worker 用のコード内では isPrimordial 属性をチェックするようにします。
if(!Worker.Current.isPrimordial) { //バックグラウンドで実行するコードを記述 }
配列とベクターの insertAt() と removeAt() メソッド
Array および Vector クラスに、特定の場所に要素を追加するメソッド insertAt() と、特定の場所の要素を削除するメソッド removeAt() が追加されました。
insertAt(index:int, element:*):void; removeAt(index:int):*;
インデックスには負の数を使うと終わりから数えた順番を指定することもできます。例えば -1 は一番最後の要素を指します。removeAt() は実行後に削除された要素を返します。
この操作により、配列やベクターのコピーは作成されません。
ブラウザーのズームにあわせた Stage3D コンテンツ拡大機能の無効化
現在、PPAPI を使うブラウザーと Windows XP/Vista/7 の IE では Stage3D コンテンツをブラウザーのズームに合わせて拡大する機能が利用できます。
Flash Player 19 では、この機能の有効/無効を指定する機能が追加されました。
デフォルトでは従来どおりブラウザの設定にあわせた表示になりますが、 browserzoom 属性に noscale を指定するとブラウザのズーム指定が変更されても Flash コンテンツの表示は拡大されません。browserzoom 属性に指定可能な値は scale/noscale のどちらかです。
利用する際は、以下のようにOBJECTタグ内とEMBEDSWFタグの属性として記述します。
<param name="browserzoom" value="noscale" /> params.browserzoom="noscale"
コメントする