2008年12月アーカイブ

さて、去る12月25日。婚約からものすごく間を空けてしまったものの、無事入籍を済ませました。twitterで沢山の方からお祝いのポストをいただき、非常に感激しております。

こんな近況ですが、前回エントリで予告した自作コマンドの作り方を掲載しようと思います。
ちょっとしたコマンドであれば本当に簡単に作れるのでエントリにする事自体ためらいましたが、どうやって作ってるか掲載してなかったなーということで。。

まず、Progressionプロジェクト作成時に自動的に出来るtemplatesフォルダの中から、MyCommand.asを持ってきます。
それで
・クラス名
・コンストラクタ
・自身を呼び出すcloneメソッドの中の自分自身を返しているクラス
を、作ろうとしているコマンドクラス名に書き換えて、_executeメソッドの中に実行処理、_interruptメソッドの中に中断処理を記述します。
cloneメソッドで呼んでいる自身のクラスはパラメータのセットも忘れずに。

これだけです。Progression3は有用なテンプレートが用意されていて本当に助かりますよね。

コマンドの終了処理はexecuteComplete();中断処理はinterruptComplete();
このコマンドで次のコマンドまでの処理待ちをしたいならば、全ての処理が終わった後にexecuteComplete();を書きます。

例として丸いSpriteをステージ上に追加するコマンドを作ってみます。

/*======================================================================*//**
 * 
 */
package {
	import flash.display.Sprite;
	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.*;
	/*======================================================================*//**
	 * CreateCircle クラス
	 */
	public class CreateCircle extends Command {		
		private var _sprite:Sprite;
		private var _x:int;
		private var _y:int;
		private var _r:int;
		private var _color:int;
		private var _container:DisplayObjectContainer;			/*======================================================================*//**
		 * コンストラクタ
		 */
		public function CreateCircle(container:DisplayObjectContainer = null, setx:int = 0, sety:int = 0, setr:int = 0, setcolor:int = 0xffffff, initObject:Object = null ) {
			super( _execute, _interrupt, initObject );
			//パラメータセット
			_container = container;
			_x = setx;
			_y = sety;
			_r = setr;
			_color = setcolor;
		}
		/*======================================================================*//**
		 * 実行されるコマンドの実装です。
		 */
		private function _execute():void {
			//Spriteのインスタンスを作成
			_sprite = new Sprite();
			//円を描画
			_sprite.graphics.beginFill(_color);
			_sprite.graphics.drawCircle(_x, _y, _r);
			_sprite.graphics.endFill();
			//指定表示コンテナにSpriteの追加
			_container.addChild(_sprite);		
			// 通常処理を終了します。
			executeComplete();
		}
		/*======================================================================*//**
		 * 中断実行されるコマンドの実装です。
		 */
		private function _interrupt():void {
			// 中断処理を終了します。
			interruptComplete();
		}			
/*======================================================================*//**
		 * MyCommand インスタンスのコピーを作成して、各プロパティの値を元のプロパティの値と一致するように設定します。
		 */
		public override function clone():Command {
			return new CreateCircle(_container, _x, _y, _r, _color, this );
		}
		//Spriteの参照を取得出来るようにしておく
		public function get sprite():Sprite { return _sprite; }
	}
}

何に使えるのか分かりませんが、最初はこんなのを作って慣れると良いと思います。

これを使用してみたものは以下wonderflで

かなりの期間ブログの更新をサボりました!
その間にAdobe CS4が発売されたり、CS4対応のProgression3.1がリリースされたり(nium先生お疲れ様でした!!)と世間では色々な出来事がありましたが、オンラインでActionScriptのコードを書いて実行させるwonderflの登場には度肝を抜かれました。
私も勉強がてら投稿していく予定ですので、私のインスタントかつ初心者的なソースコードをどんどんforkしていって下さいね。

なんといってもProgressionが実装されているのが良いです!
Progressionの俺俺コマンドはここで披露していくのがよいのではと思っています。

例えばこれはTwitterでnium先生からLoopCommand的なものを作ってみてはというポストを受けて作ってみたのですが、

nium先生がもっとすっきりさせてコマンド側の処理も
きちんと書いてくれたりしています!ありがとうございます!

これは2人でのやりとりでしたが、複数人で俺はこう書く的な事をどんどん披露していけるのがwonderflの凄いところで、私レベルの人間には非常に勉強になり、ありがたいサイトとなっております。

さあ、みんな俺俺コマンドを作ってみよう。
という事で次は俺俺コマンドの作り方でも書こうかなと思います。

追伸:gihyo.jp連載もあと一回を残すのみとなりました!
最新第4回からサンプルサイトを作りはじめています。
最初から作るのは酷でもこのサンプルデータを元に改造していって覚えるってのも手じゃないかと思うのです。

Progression勉強会#1で発表させていただきました!!
私のつたない喋りを最後まで聞いてくださった皆様、本当にありがとうございます。

発表に使用したスライドはこちら
これはswfファイルですので、対象ファイルを保存していただくと良いでしょう。

サンプルプロジェクトファイルはこちらからダウンロードしてください。元の形式ってところをクリックするとダウンロードできます。

AIRだからいいかーと思ってフォント埋め込んでいますので、ヒラギノフォント持ってない人はフォント変えてください。。。(おかげさまであんなアプリなのに5M近いんですが)

細かい処理とかエラー処理とかはあまり入っておりませんし、まだまだリファクタリングしがいのあるプロジェクトファイルですが、、、これを参考に、みんなでカスタムコマンド沢山作ろうよ!!というのが今日伝えたかった事です。

私の今回のカスタムコマンドはそれほど汎用性は無いのですが、今後はもっと使えるProgression拡張というものを作っていきたいと思っています。

以下今回の発表の概要です

1.FlashでAIRを作る環境を整えたら、すぐProgressionでAIRアプリが作れる
2.FlashDevelopでAIRのコード補完を実現させる環境を作る
3.Progressionで作るときはシーンをどうするか考えてから作る
4.汎用処理はカスタムコマンド作るとすごく便利
5.RSSリーダーの処理の流れはWebDesigning11月号を参考にしました
6.あとは中身を見てみてね(汚いけど)

今回のサンプルでProgressionの良さを再発見してしまいました。
もっともっと沢山作って精進したいと思います!!

ブログの更新が止まってしまっておりますが、実はgihyo.jpでProgressionの記事を連載させていただく事になりました!!
こちらです。
今月はこちらに専念したいと考えております。

どちらかというと初めての人向けに書いておりますので、使ってる人には物足りない記事になるかもしれませんが、Progressionの簡単さを多くの人に実感してもらえるような記事にしたいと思っています。

宜しくお願いいたします。

このアーカイブについて

このページには、2008年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年11月です。

次のアーカイブは2009年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。