- 2010年04月01日 (木)
- Tweet
リリース前に抑えておきたいFlash Player 1O.1の新仕様
Adobe Creative Suite 5の発表が4/12にされるそうですが、今年は新しい技術が登場しそうでワクワクしている方も多いのではないでしょうか。そこで、Flash Player 1O.1の新機能について、public betaを触って気づいた点をいくつか紹介したいと思います。
※もっとも重要なことを最後に書いていますので、読まれる場合は記事の最後まで必ずご覧ください。
MovieClipの先頭フレームが1から0になる
従来はMovieClipの先頭フレームは「1」でした。しかし配列をはじめプログラムで扱うには「1」よりも「0」のほうが望ましかったため「0」を採用されることのことです。
this.gotoAndStop(0); // 先頭フレームへ this.gotoAndStop(this.totalFrames - 1); // 最終フレームへ
噂では次期Flash CSSのタイムラインも先頭フレームは0となっているようです。
型指定ができるDictionaryクラスとして用意された新クラス
FlashPlayer10から配列で型指定したい場合はVector型というクラスが用意されました。ハッシュとして利用する場合はDictionaryクラスがありましたが、その強化版としてGlossaryクラスが用意されました。Vectorと同様に型指定できるようになっています。
var g:Glossary.<String> = new Glossary.<String>(true, true, 10); g["hoge"] = "hogehoge"; g["piyo"] = "piyopiyo"; g["moja"] = 16; // ←数字を挿入するとコンパイルエラーになる
※参考までにDictionaryは「辞書」という意味ですが、Glossaryは「宝典」という意味です。
GPU対応が進む、PixelBenderや行列計算にも対応
1O.1のGPU対応としてH.264ビデオの再生支援が既に紹介されていますが、実はPixelBenderや行列計算(特にネイティブのMatrix3Dによる計算)、そしてdrawTriangle()にも適用されることがわかりました。これにより3Dの各種計算やテクスチャマッピングへの効果的な最適化が行えるようになります。WinだけでなくMacでもLinuxでも有効になるみたいです。
フォーラムで聞いた話によれば、Papervision3Dの次期バージョン PapervisionXでも対応を進めているとか。使用方法はHTMLのエンベッド時にパラメーターをwmode=”gpu”にすることで有効になります。
スクリプトでwmodeの変更が可能に
root.loaderInfoにwmodeプロパティーが追加されました。これによりランタイム時に動的にwmodeをtransparentに変更することが可能になります。スクリプトでは以下のように記述します。
import flash.display.StageWMode; root.loaderInfo.wmode = StageWMode.TRANSPARENT;
ActionScript 3.1の搭載
Flash Player 1O.1とバージョンが上がるのと一緒に、ActionScript 3もマイナーバージョンアップし、ActionScript 3.1が搭載されます。ActionScript 3.1は頓挫したECMA Script 4の採用を諦め、ECMAのHarmony(ハーモニー)に準拠する方向へシフトしたようです。
例えば、import文の挙動が変わります。従来はSpriteクラスやTextFieldクラスを利用する場合は
import flash.text.*; import flash.display.*;
とたくさんのimport文を書く必要がありました。しかし、ActionScript 3.1では以下のように記述すれば、一括でインポートすることができます。
import flash.*;
外部ライブラリを使う場合には、import文をより完結に書けるので開発効率があがりそうですね。もちろんコンフリクト(重複)する場合は完全なパッケージ名を記述することで回避可能です。
またActionScript 3.1ではオーバーロードも対応しています。既にbeinteractive先生がwonderflにサンプルのソースコードを投稿されているのでぜひチェックしておきましょう。JAVA言語をやっていたことのある方には馴染みのある記法ですね。
グローバルサウンドコントローラー
ActionScript 3.0では動的に作成したSoundインスタンスの音量を一括で管理することができませんでした。しかしグローバルサウンドコントローラー(GlobalSoundControllerクラス)が搭載され、全体の音量を一括で処理しやすくなりました。
import flash.media.*; root.loaderInfo.uncaughtSound.addEventListener( UncaughtSoundEvent.SAMPLE_DATA_EVENT, function( e:UncaughtSoundEvent ):void{ var c:GlobalSoundController = e.target as GlobalSound; c.volume = "50%"; //全体の音量を50%にする } ); }
グローバルエラーハンドラーという機能が10.1には搭載されますが、1O.1のグローバルサウンドコントローラーは互いにスペル間違いしないように気をつけないといけませんね。
まとめ
オープンスクリーンプロジェクトの成果としてスマートフォンに搭載されることで期待されるFlash Player 1O.1。ActionScript 3.1の搭載は現場レベルでは少し混乱が起きそうですが、GPU対応などパフォーマンス的にはかなり向上するので、SWFObjectのバージョン判定等でいっきに1O.1を指定してみてもいいかもしれませんね。
ということで、4/1のエントリーとしてまとめてみました。もちろん4月馬鹿な内容ですが(念のため)、こういう機能があればいいのになぁという個人的希望でまとめてみました。最後までご覧頂きありがとうございました。
2010年04月02日(金) 13:38
きーっ!だまされた!
やったー、便利ー!
と思っただけに残念です。
でも、いい夢見させてもらいました。