Progression備忘録

先月Progressionをはじめて案件で導入しました。
全画面表示、Macでのマウスホイール、個別ページURLの設定等、Progressionの恩恵を様々授かったのですが、初めてということでいろいろ躓いたことや、反省点も。
それらを備忘録として晒しておきます。
使用したバージョンは3.1.82

■CastButton継承クラスを使わないシーン移動

途中までシーン移動するトリガーボタンはCastButtonを継承したクラスをひとつひとつ作っていました。
が、途中CastButtonを使わなくても”execute()“メソッドでProgressionのコマンドは実行出来ることを教えてもらいました。

//シーンhogeへ移動
new Goto(new SceneId("hoge")).execute();

またテンプレートとなるシーンやボタンクラスを作っておけば、こんな感じでそれらを一括で作成することができます。

for (var i:int = 0; i <= total; i++)
{
	/*SCENE_ARRAYには各シーンIDを格納*/
	var scene:CommonScene = new CommonScene( SCENE_ARRAY[i] );

	/*引数のオブジェクトに自由に値を付加できる
	  initObject.sIdで取り出し移動先を振り分けする*/
	var btn:CommonBtn = new CommonBtn( { sId:SCENE_ARRAY[i] } );
}
 

■シーン遷移時の処理は計画的に

Progressionの肝であるシーン遷移。
自分は各シーンにcontainerというコンテンツの入れ物(CastMovieClip継承)を作っていったのですが、
ただシーン移動をするだけでも前のシーンのcontainerの”_onCastRemoved“やシーンの”_onGoto“,”_onUnload“、次のシーンの”_onLoad“,”_onInit“、さらにこのシーンのcontainerの中などいろんなところに処理を書くことができます。
それぞれきちんと役割や実行される順番があるのですが、これがどうして適当に書いていってもなんとなく動いてしまいます。
結果、必要以上にいろんなところにコードが分散してしまいました。ボタンの処理も中と外にそれぞれロールオーバーの処理が書いてあったり。。。
『作りたいものは、楽しいところだけ作る』のProgressionですが、しっかりそこらへん挙動を把握したうえで最低限プロジェクトでのルール決めはしましょう、当たり前ですが。
下記サイトに書かれているとおり基本”onLoad“と”onUnload“という考え方が良さそうです。
http://www.muraken.biz/blog/2009/06/02/case-study-of-progression-vol2/

■Tweenerのトランジションに注意

細かい動きはフレームアニメーションでつくり、DoTweenerコマンドで実行。
しかし動きが何だか変だ。
これはProgressionというよりTweenerの話ですがtransitionプロパティの初期値は”linear“ではなく”easeOutExpo“となぜか尖った動きとなっています。
このままではせっかく調整したフレームアニメが台無しなので、しっかり”linear“指定してやります。

// 実行したいコマンドを登録します。
addCommand(
	// "end"フレームまで2秒かけてアニメーション
	new DoTweener(this , { _frame:"end" , time:2 , transition:"linear" } )
);
 

■Preloaderの注意

これもProgressionサイトに限った話ではないですが嵌ったこと。
全シーン共通で使用する静的パラメーターを一つのクラスにまとめて管理していたのですが、
そこへ加えた修正が何故か反映されない。
検証するとindex.swf単体で動作させたときは問題なく修正されていることを確認。
原因はpreloaderからもそのクラスを参照していたため、その時点で該当クラスがインスタンス化されていたことによるもの。
preloaderは修正していない状態でパブリッシュしたものをそのまま使用していたため、preloaderを通すと修正が反映されていなかったというわけ。
以降修正のたびにpreloaderも書き出しなおし&アップし直しということになってしまい、設計段階で切り分けはしっかりしましょうねという教訓になりました。

 

とまあいろいろボロボロでしたがその便利さは十分実感できました。
今回はネット上のドキュメントの豊富さからProgression3で制作しましたが、いろいろバグも修正されているようなので次回はProgression4で制作したいと思います。

wonderfl本発売記念イベント行ってきた&初wonderfl

26日銀座のアップルストアで開催されたwonderfl本発売記念イベントへ行ってきました。
内容はTwitter実況(http://twitter.com/#search?q=%23wonderfl)や、
実際のコード(http://wonderfl.net/tag/wonderfl本刊行記念イベント)を見ていただくのが一番ですね。
wonderflのウリをフルに活かしたライブコーディングがメインでした。
フォークビッツと呼ばれる現人神の中から3人の凄腕ワンダフラーが解説を加えつつ
コーディングを進めていったのですが、3人がともに3Dだったのが時代の流れか。
でもネイティブ3D or PV3D の違いや、それぞれ3Dをどう使うかという個性が際立って逆に面白かったです。
自分も3Dもっと勉強なきゃなぁと。
あとパーリンノイズ万能説。

そんなこんなで3Dではないですが、自分も初ワンダフルってみました。
なんかnengaflって年始のイベントフォーク大会で現在1位を独走している作品をフォーク。
ドラクエライクなRPGマップを自由にデザイン生成できる、なんとも素敵なものなのですが、
ちょいと弄らせていただいて倉庫番ゲームに。
RPGからパズルゲームへ簡単に作り変えることができるのも、フォーク元のエラい人とwonderflのおかげ。

今回の収穫はASでもXOR(排他的論理和)が使えるのだということ。
知りませんでした。

if( A ^ B )

A,Bは数値型、Booleanではダメなようです。

クリア判定とかはマップを2次元配列でまわすより、一次元の番号を格納して、
都度横サイズで除算したりした方が早いのかな?

  
という事でこれからも暇を見つけてwonderflで遊びたいと思います。