地味すぎて伝わらないFlash Player 11の新機能

Flash Player 11で新たに加わった機能の一部をご紹介します。※ただし地味なものにかぎります。つまり、Stage 3Dや64 bitのネイティブサポートなど派手なものには触れません。派手な機能は第1に、これからも多くの記事で紹介されるでしょう。第2に、とくに注目されているStage 3Dについては、ほとんどのユーザーは直接APIにさわることはなく、フレームワークやライブラリのサポートを待った方がよいと考えるからです。
さて、本稿でご紹介するのは、筆者野中文雄が興味をもって調べた、Flash Player 11に備わったごく一部の新機能です。ただし、リリースノートや他の記事にとどまらず、英文ドキュメント「ActionScript 3.0 Reference for the Adobe Flash Platform」まで当たりました。そのうえで個々の項目については、F-siteの記事や筆者のサイトにリファレンスとして掲載しています。本稿はそのまとめ記事です。興味をもたれた読者は個別の解説で詳しい内容をご参照ください。
01 ビットマップの大きさに制限がなくなった
ビットマップの大きさにこれまであった制限がなくなりました。Flash Player 11からは「BitmapDataオブジェクトは最高解像度16メガピクセル(16,777,215ピクセル)に制限されなくなり、ビットマップの最大幅/高さは8,191ピクセルに制限されなくなりました」。ActionScript 3.0としては、BitmapDataオブジェクトのサイズに制限が実際上なくなったことを意味します(詳しくは、F-site「Flash Player 11でビットマップのサイズ制限がなくなる」参照)。
02 ガベージコレクションの実行を制御できる
負荷の高い処理であるガベージコレクションの実行を促したり抑えたりする静的メソッドSystem.pauseForGCIfCollectionImminent()が備わりました。ガベージコレクションの負荷と空きメモリによる切迫度を、引数のしきい値で定めます。切迫度を高めるとガベージコレクションの実行が抑えられ、低めればメモリは開放されやすくなります(詳しくは、「System.pauseForGCIfCollectionImminent()メソッド」参照)。
03 ステージに表示するオブジェクトについての新機能
ステージに表示するオブジェクト(DisplayObjectのサブクラス)についての新機能はふたつご紹介します。第1は、DisplayObjectContainer.removeChildren()メソッドです。親DisplayObjectContainerインスタンスの表示リストから、複数の子DisplayObjectインスタンスをインデックスで指定して除きます(詳しくは、「DisplayObjectContainer.removeChildren()メソッド」参照)。forループを使わずに済むのは便利です。
第2の新機能は、MovieClip.isPlayingプロパティです。読取り専用で、MovieClipインスタンスが今再生されているかどうかを確かめられます。とくに、インスタンスをステージから消すときには、原則としてタイムラインの再生を止めた方がよいです。そうした場合に、このプロパティで再生中のインスタンスを調べられます(詳しくは、「MovieClip.isPlayingプロパティ」参照)。
04 3次元空間座標を扱うクラスにデータコピーのメソッドが加わった
3次元空間座標を扱うクラスには、Matrix3DとVector3Dがあります。これらのクラスのオブジェクトに、データをコピーするメソッドが加えられました。オブジェクトを新たにつくることなく使い回せますので、メモリや処理を軽くできます。
Matrix3Dクラスについては、まずオブジェクトがもつ行列のデータを、Vector3Dオブジェクトとの間で行あるいは列ごとにコピーするメソッドがあります。つぎに、Vectorオブジェクトとの間で、行列データをまとめてコピーすることもできます。そして、もちろんMatrix3Dオブジェクト同士でのデータコピーも可能です(詳しくは、「Matrix3Dオブジェクトの行列データをコピーするメソッド」参照)。
Vector3Dクラスには、まずVector3Dオブジェクト同士でデータをコピーするメソッドが加わりました。つぎに、コピーではなく、データを設定するメソッドです。すでにあるオブジェクトのデータを書替えて、使い回すことができます(詳しくは、「Vector3Dオブジェクトの座標値をコピーや設定するメソッド」参照)。
05 ByteArrayオブジェクトからサウンドデータをSoundオブジェクトに読込む
Soundクラスに、ByteArrayオブジェクトからサウンドデータをSoundオブジェクトに読込むメソッドが加わりました。Sound.loadCompressedDataFromByteArray()メソッドはMP3サウンドデータを、Sound.loadPCMFromByteArray()メソッドはPCM 32ビット浮動小数点型サウンドデータを、ByteArrayオブジェクトからSoundオブジェクトに読込みます(詳しくは、「ByteArrayオブジェクトからサウンドデータをSoundオブジェクトに読込むメソッド」参照)。
(野中 文雄)

