- 2009-02-15 (日) 16:49
- Flash
そろそろコンポーネントベースでは太刀打ち出来なさそうな案件が降ってくる予感がします(ぇ)。
なので、Progressionの力を100%発揮出来るクラスベースでの作成方法の勉強を始めました。
俺俺コマンドの作り方 – Is It So Easy?
まずはnorthprintさんが書かれた上記エントリーを読んで、簡単なカスタムコマンドを作ってみました。
コマンド名はaddTeraFireです(ん?)
trick7 – 火・炎の表現に – 「TeraFire」ライブラリ公開してみます。
前日行ってきたadobeMAXで個人的に一番ピキーンと来たセッションがSpark projectのライトニングトークでのTeraFireライブラリの紹介でした。
個人的にコレの他にTeraThunderがあると今の仕事につかえそうです(ぇー)。
で、これをProgressionのカスタムコマンドとして作ってみたのが以下です。
/**
*
*/
package classtest{
import flash.display.DisplayObjectContainer;
import jp.progression.casts.*;
import jp.progression.commands.*;
import jp.progression.core.commands.Command;
import jp.progression.events.*;
import jp.progression.loader.*;
import jp.progression.*;
import jp.progression.scenes.*;
import com.trick7.effects.TeraFire;
/**
* MyCommand クラス
*/
public class addTeraFire extends Command {
private var _x:Number;
private var _y:Number;
private var _width:Number;
private var _height:Number;
private var _color:uint;
private var _colorOut:uint;
private var _container:DisplayObjectContainer;
private var _fire:TeraFire;
/**
* コンストラクタ
*/
public function addTeraFire( container:DisplayObjectContainer = null, xPos:Number = 0, yPos:Number = 0, fireWidth:Number = 30, fireHeight:Number = 90, fireColorIn:uint = 0xFFCC00, fireColorOut:uint = 0xE22D09, initObject:Object = null ) {
super( _execute, _interrupt, initObject );
//パラメータセット
_x = xPos;
_y = yPos;
_width = fireWidth;
_height = fireHeight;
_color = fireColorIn;
_colorOut = fireColorOut;
_container = container;
}
/**
* 実行されるコマンドの実装です。
*/
private function _execute():void {
//TeraFireインスタンス作成
_fire = new TeraFire(_x, _y, _width, _height, _color, _colorOut);
//指定表示コンテナにTeraFireの追加
_container.addChild(_fire);
// 通常処理を終了します。
executeComplete();
}
/**
* 中断実行されるコマンドの実装です。
*/
private function _interrupt():void {
// 中断処理を終了します。
interruptComplete();
}
/**
* MyCommand インスタンスのコピーを作成して、各プロパティの値を元のプロパティの値と一致するように設定します。
*/
public override function clone():Command {
return new addTeraFire( _container,_x,_y,_width,_height,_color,_colorOut,this );
}
}
}
ほぼnorthprintさんのソースそのままですw
そもそもが簡単に扱えるライブラリであるTeraFireをわざわざカスタムコマンド化する意味があるのかは激しく疑問ですが、カスタムコマンドの作り方を何となくでも分かったのでOKとします笑
protected override function _onInit():void {
// 実行したいコマンドを登録します。
var sList:SerialList = new SerialList();
for (var i:int = 0; i < 100; i++) {
var setx:int = Math.random() * progression.stage.stageWidth;
var sety:int = Math.random() * progression.stage.stageHeight;
sList.addCommand(
new addTeraFire(progression.container,setx,sety,30,90),
new Wait(500)
);
}
sList.execute();
}
こんな感じでシーンにas書いたのが下記のサンプルです。
[swfobj src="http://www.planet-ape.net/wp-content/uploads/2009/02/index.swf" align="none" allowfullscreen="false"]
炎いっぱい!!(重いよ!)
- Newer: ボタンコンポーネントを設置するjsfl
- Older: 1月の読書
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.planet-ape.net/blog/archives/694/trackback
- Listed below are links to weblogs that reference
- カスタムコマンドを作ってみる(addTeraFire) from planet-ape|blog
