ActionScript 3.0で始めるオブジェクト指向スクリプティング

第61回 StarlingフレームワークでStage3Dを試す

この記事を読むのに必要な時間:およそ 7 分

「Starling」は,Flash Player 11の新しい描画機能「Stage3D」にもとづいてつくられた2次元の描画用フレームワークだ。ハードウェアの「GPU」を用いることにより,速くて滑らかな描画ができる※1)。オープンソースのフレームワークなので,あらかじめダウンロードしてインストールしておかなければならない。

Starlingフレームワークのインストール方法については,FumioNonaka.comStarlingフレームワークをインストールするをお読みいただきたい。また,Flash Player 11でパブリッシュするため,今回からFlash Professional CS6を用いることにする(ただし,Flash Professional CS5とCS5.5については,機能拡張によりFlash Player 11での書出しはできる。詳しくは,Flash CS5/CS5.5でFlash Player 11のSWFを書出す参照)。

今回を含めた全3回を使って,Starlingフレームワークの基本的な使い方についてご説明しよう。まずは,Starlingフレームワークを用いたスクリプトの組立て方,およびStage3Dへの簡単な描画とアニメーションから始める。

※1
「GPU」(Graphics Processing Unit)は,コンピュータの処理の中でも負荷が高くパフォーマンスに影響する画像処理の演算を扱うプロセッサだ。単に画面を描くことだけでなく,その前の座標空間における変換やカラーの演算など描画に伴う大量の処理までCPUに代わって行う。
そして,「Stage3D」は,GPUを使うことによって描画の処理を飛躍的に高める技術だ。Flash Player 11から備わった。2次元・3次元に限らず,スクリーンの描画を速め,きめ細かで滑らかなアニメーションを実現する。

StarlingフレームワークとStage3D

Starlingフレームワークで表示するオブジェクトは,Flashコンテンツの(表示リストがつくられる)ステージとは別のStage3Dの画面に描かれる。そして,Stage3DのレイヤーがあるのはFlashのステージの奥だ。つまり,StarlingにかぎらずStage3Dのコンテンツは,すべてFlashコンテンツの後ろに置かれることになる図1)。

図1 StarlingコンテンツはFlashのステージの背面に置かれる

StarlingコンテンツはFlashのステージの背面に置かれる

さて,Stage3Dは文法こそActionScript 3.0にしたがうものの,プログラミングの考え方はアセンブラ(機械語)に近い。そのため,新しい言語といってよい。いい方を換えれば,機械語に近いレベル(「低レベル」という)で処理することにより,描画を速めるのがStage3Dだ。そのため,表示リストの階層や,フレームベースのアニメーションといった仕組みはない。

Starlingには,SpriteMovieClipといったクラスがあり,addChild()メソッドも使える。また,addEventListner()メソッドENTER_FRAMEイベントのリスナーを加えることもできる。これまでのActionScript 3.0と似た感覚でStage3Dによる2次元の描画を扱えるのがStarlingフレームワークなのだ。

Starlingフレームワークの表示リストを組立てるには,まずFlashコンテンツのメインタイムラインに当たる最上位の表示オブジェクトをつくらなければなない。そして,Flashのタイムラインにオブジェクトを置いても,Stage3Dには描かれない。だから,Starlingフレームワークの表示オブジェクトをつくるスクリプトは,フレームアクションに書いたのでは勝手が悪い※2)。

したがって,Starlingフレームワークのメインタイムラインとなる表示オブジェクトは,クラスとして定める。このようなクラスを,表示リストのrootにちなんで「ルートクラス」と呼ぶことにしよう。Starlingフレームワークのルートクラス(名前はMySpriteとした)は,つぎのような組立てを基本とする。

package  {
  import starling.display.Sprite;
  public class MySprite extends Sprite {
    public function MySprite() {
      // 処理内容
    }
  }
}

ぱっと見,Flashの表示オブジェクトを定義するクラスと変わらない。ただし,継承extends)するスーパークラスの完全修飾名がflash.display.Spriteではなく,starling.display.Spriteであることに注意してほしい(「完全修飾クラス名」については,第22回「MovieClipシンボルにクラスを定義するで説明した)。Stage3DにつくられるStarlingフレームワークの表示リストには,Starlingの表示オブジェクトしか加えられないからだ。

StarlingフレームワークにはSpriteクラスのほかにも,FlashのActionScript 3.0定義済みと同じ名前のクラスがいくつも備わっている。これらのクラスは,これまでのActionScript 3.0と同じ感覚で書いたステートメントを解釈し,Stage3Dの処理に置換えて命じてくれる。いわば,標準のActionScript 3.0とStage3Dとの間の通訳なのだ。

ルートクラスのActionScript(AS)ファイルと同じ場所に置いたFlashムービー(FLA)ファイルのフレームアクションには,Starlingフレームワークを初期化するステートメントが3行だけ書き加えられる(スクリプト1)。まず,Starlingクラスimport宣言したら,つぎにStarlingインスタンスをつくる。メソッドの引数はルートクラスとFlashのStageオブジェクト(DisplayObject.stageプロパティ)の2つだ。そして,Starling.start()メソッドを呼び出すと,Starlingフレームワークの描画が始まる。

スクリプト1 Starlingフレームワークを初期化するフレームアクション

// フレームアクション: メインタイムライン
import starling.core.Starling;
var myStarling:Starling = new Starling(MySprite, stage);
myStarling.start();

この3行のフレームアクションは,ルートクラスの名前を除けば,ほぼお決まりといえる。したがって,次回以降もとくに説明しないかぎり,FLAファイルのメインタイムラインにはこのスクリプト001が書かれているものと考えてほしい。

※2
Starlingフレームワークのスクリプトをフレームアクションに書けない訳ではない。ただ,そのスクリプティングはかなり煩わしく,見にくいものになる。F-siteStarlingフレームワークのスクリプトをフレームアクションに書いてみる参照。

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入