Flashのフレームワーク「Progression3」を始めてみよう!

第3回Progression3に用意されているコマンドとキャスト

今回はProgression3に用意されているコマンドクラスとキャストオブジェクトを紹介します。

これらを上手く用いることで劇的に開発スピードを高めることができます。今回紹介するもの以外にも多数用意されていますので、ドキュメントに目を通すことをお勧めします。

コマンドクラス

以下、使用頻度が高いと思われるコマンドクラスを紹介します。

Traceコマンド

Traceコマンドは、デバッグ時に出力されるtrace文を出力するコマンドクラスです。コマンドの動作に慣れないうちは、このコマンドを多用し、どのような流れでコマンドが動作するのか見ながら制作を行うと良いでしょう。

コマンド内で以下のように記述します。

リスト1
addCommand(
    new Trace(“出力させたい文字列”)
)

Waitコマンド

Waitコマンドは、一定時間処理を待機させるコマンドクラスです。単位はミリ秒で指定します。遅延処理を行いたい場合に使用します。

以下に、1秒枚にTrace文を出力する処理の記述例を示します。

リスト2
addCommand(
new Wait(1000),
  new Trace(“1秒待ちました”),
  new Wait(1000),
  new Trace(“もう一回1秒待ちました”),
)

AddChild、AddChildAtコマンド

AddChildコマンドは、表示リストにオブジェクトを追加するためのコマンドクラスです。

コマンド内で以下のように記述します。

リスト3
addCommand(
  new AddChild(コンテナ,オブジェクト)
)

AddChildコマンドは、ActionScript3の通常のaddChildメソッドと大きく異なる動作はしませんが、表示リストのインデックス位置を指定できるAddChildAtコマンドが非常に秀逸な作りとなっています。

AddChildAtコマンドはコマンド内で以下のように記述します。

リスト4
addCommand(
  new AddChildAt(コンテナ,オブジェクト,表示インデックス)
);

ActionScript3の通常のaddChildAtメソッドと異なる点は、表示リストのインデックスの扱いです。 通常、ActionScript3のaddChildAtメソッドはインデックスを飛ばして設定することができません。

例えば、以下のようなソースコードはエラーとなります。インデックス2がいきなり指定されているためです。

リスト5
addChildAt(_container,_object1,2);
addChildAt(_container,_object2,1);

しかし、ProgressionのAddChildAtコマンドは以下のように記述することが可能です。

リスト6
addCommand(
  new AddChildAt(_container,_object1,2)
  new AddChildAt(_container,_object2,1)
);

存在しないインデックス2を指定しても、問題無く作られています。

ActionScript2では表示の重ね順をコントロールするため、大きなインデックス番号を与えて、常に前面に表示するといった作り方ができましたが、ActionScript3では表示リストの扱い方が変更となったため、そのような作り方はできませんでした。

ProgressionのAddChildAtコマンドはActionScript2寄りの記述が出来るように作られています。

RemoveChild、RemoveAllChildrenコマンド

RemoveChildコマンドは表示リストから対象オブジェクトを削除します。

コマンド内で以下のように記述します。

リスト7
addCommand(
  new RemoveChild(コンテナ,オブジェクト)
)

特筆すべきは、RemoveAllChildrenコマンドが用意されている点です。これは対象オブジェクトの子オブジェクトをすべて削除するコマンドです。

以下のように記述することで、対象コンテナの子表示オブジェクトをすべて削除することができます。

リスト8
addCommand(
  new RemoveAllChildren (コンテナ)
)

DoTween、DoTweenerコマンド

DoTween、DoTweenerコマンドは、イージング動作を提供してくれるコマンドクラスです[1]⁠。DoTweenコマンドはfl.transitions パッケージ、DoTweenerコマンドはTweenerというActionScriptのライブラリの機能を提供してくれます。

特に、DoTweenerコマンドは、元となるTweenerがフィルターやカラーショートカットにも対応し非常に高機能で、多くの場面で活用できます。

以下に、1秒かけて座標(100,100)へ移動するための記述例を示します。

DoTweenコマンドの例

リスト9
addCommand(
new DoTween( _object, { x:100, y :100}, Regular.easeOut, 1000 );
)

DoTweenerコマンドの例

リスト10
addCommand(
  new DoTweener(_object,{ x:100, y :100,transition: " easeOutExpo ",time:1 });
)

Propコマンド

Propコマンドは対象オブジェクトのプロパティを設定するコマンドクラスです。一度に大量のプロパティを設定する場合や、コマンド実行内でプロパティの変更を行いたい場合に便利な機能です。

以下に、座標(100,100),透明度0の状態にしておいて、1秒かけて座標(200,200)に移動し透明度を不透明に変化させる場合の記述例を示します。

リスト11
addCommand(
  new Prop(_object,{x:100,y:100,alpha:0}),
  new DoTweener(_object,{x:200,y:200,alpha:1,time:1})
)

LoadURLコマンド

LoadURLコマンドは、XMLファイルやテキストファイル等の外部ファイルを取得するために使用するコマンドクラスです。このコマンドクラスに当該ファイルのURLRequestインスタンスを指定するだけで、簡単に外部ファイルが取得できます。

コマンド内で以下のように記述します。

リスト12
addCommand(
  new LoadURL (new URLRequest( "当該ファイルのURL" ))
)

取得したデータは自身のdataプロパティ、コマンドクラスのlatestDataプロパティで取得します。

リスト13[2]
addCommand(
  new LoadURL (new URLRequest( "当該ファイルのURL" )),
  function():void{
    trace( this.latestData ); //コマンドクラスのlatestDataプロパティを参照
  }
)

また、bytesLoaded、bytsTotalといったプロパティを持っていますので、ロード最中の処理を簡単に実装することも可能です。

LoadChild、LoadChildAtコマンド

LoadChildコマンドは、表示リストに指定したURLのswf、JPEG、GIF、または PNGファイルを追加するためのコマンドクラスです。LoadChildAtコマンドは、LoadChildコマンドにAddChildAtコマンド同様、表示リストの指定インデックスにswfファイルを読み込みます。

コマンド内で以下のように記述します。

リスト14

addCommand(
    new LoadChild(コンテナ,new URLRequest( "当該ファイルのURL" ))
)
addCommand(
    new LoadChildAt(コンテナ,new URLRequest( "当該ファイルのURL" ),表示インデックス)
)

以上、コマンドクラスの紹介でした。使いこなすことが出来ると非常に便利ですので、是非色々触ってみてください。

キャストオブジェクト

次に、使用頻度が高いと思われるキャストオブジェクトを紹介します。キャストオブジェクトは通常、用意されているキャストオブジェクトクラスを継承して使用します。

キャストオブジェクトのソースコードを全て載せると非常に冗長となってしまうため、ここでは用意されているキャストオブジェクトの紹介のみに留めます。

CastMovieClip、CastSprite

キャストオブジェクトの中でも使用頻度が高くなるのが、CastMovieClip、CastSpriteです。MovieClip、Spriteにそれぞれ対応しており、それぞれAddChildコマンド、RemoveChildコマンドで表示リストに追加、削除した際のイベントの連携を行うことができます。

例えば、呼び出し元が以下コードだとします。

リスト15
var _castSprite = new myCastSprite();
addCommand(
  new AddChild(progression.container, _castSprite),
  new Trace(“myCastSpriteが追加されました”)
)

そして、CastSpriteを継承したmyCastSpriteの_onCastAddedを以下のようにオーバーライドします。

リスト16
protected override function _onCastAdded():void {
  addCommand(
    new Trace(“myCastSpriteが追加されます”)
  );
}

これを実行すると、以下の順番で出力されます。

リスト17
myCastSpriteが追加されます
myCastSpriteが追加されました

呼び出し元のコマンドでキャストオブジェクトを追加→キャストオブジェクトの追加イベント→呼び出し元の次のコマンドという順に実行されるのです。これがキャストオブジェクトの大きなポイントです。

CastBitmap

BitmapDataを表示するためのキャストオブジェクトです。 CastSprite同様に表示リストに追加、削除した際のイベントの連携を行うことができます。

リスト18

new CastBitmap( new BitmapData( 100, 100 ) );

CastImageLoader

画像ファイルのLoaderオブジェクトを表示するためのキャストオブジェクトです。

CastSprite同様に表示リストに追加、削除した際のイベントの連携の他にロードの開始、完了といった際のイベント連携が可能です。

リスト19
var _castImageLoader = new CastImageLoader ();  
_ castImageLoader.load(new URLRequest("画像ファイルのURL”));  

CastButton

CastButtonオブジェクトはボタンの機能に特化したキャストオブジェクトです。ロールオーバー、ロールアウト、ダウン、アップの処理を簡潔に記述でき、クリック時の外部URLへの遷移やツールチップの設定が可能で、シーンIDの設定のみでクリック時にシーンの移動をさせることができます。

シーン間の移動をボタンで行う場合は、このオブジェクトを使用するのが一般的です。以下に、記述例を示します。

リスト20
var _castButton = new CastButton();
_castButton.sceneId = new SceneId(“/index”);//クリックでindexシーンへ移動する
_castButton.toolTip.text="Indexへ移動します";//ツールチップテキストの表示

以上、キャストオブジェクトの紹介でした。

今回紹介したキャストオブジェクト以外にもまだ用意されているキャストオブジェクトはあります。表示オブジェクトに関しましては一通り揃っておりますので、適材適所で使用するのが良いでしょう。

駆け足となりましたが、今回はこれで終了です。

次回からはProgressionを用いて簡単なウェブサイトを作成します。お楽しみに!

おすすめ記事

記事・ニュース一覧