« 初カラオケ | Home | progression検証 #2 シーンの階層化 »

Oct 202008

progression検証 #1

Ver.2で途中まで手を付けたままで、なかなか先に進めずにいたprogression。
改めてVer.3で最初からやり直してみる。
同じタイミングでtrick7さんもスタートしている。trick7.com blog: やっと Progression3 をさわりはじめたメモ 多分こちらの方がヨタヨタ展開の予感。

まずprogression.jp | ドキュメント | クラス制作ガイドで一通り実装。色々基本的な項目がパッケージ化されていて便利。元のAS3を忘れそうで恐ろしいw

この時点での感想・疑問点としては

  1. シーンが遷移中にボタンが自動的にKILLされている。これは便利な面もあれば不便な面もある。任意で解除できるのかは追って調べる。(ただ解除したらコマンド系非同期処理になにか破綻が出てくるかもしれない)
  2. flashVarsにJSONを良く使用するのでindex.htmlにJSONを組み込みたいのだけど、テンプレートをどう修正すれば良いのか良く分からない(SWCの中?)。これも追って調べる。
  3. データ構造がまだきちんと分かっていない。Indexの中のnew Progressionの第3引数でrootClass(ガイドではindexScene)を定義しているが、ここをnullにした場合どういう状態になるのか?(暗黙的にindex?)
  4. IndexSceneの中で他のシーン(About,Contact)を生成している理由は?情報構造的にindexSceneの子供という考え方?
  5. Sceneに複数のcastを割り振りできなくなった?(多分できるけど)

勉強会に行きたいのだけど、いつも都合が合わず欠席している。
次回こそなんとしても行きたい。

4.についてはIndex.asの中でも可能。Progressionオブジェクトに対して

// Progression インスタンスを作成します。
prog = new Progression( "index", stage, IndexScene );
// about scene の追加
var about:AboutScene = new AboutScene("about");
prog.root.addScene(about);
// ContactScene の追加
var contact:ContactScene = new ContactScene("contact");
prog.root.addScene(contact);
と言う感じで、ただここで"root"と言うのは第3引数のrootClass:SceneObjectのことを意味している。つまり"about","contact"は"index"の子供ということ。(まぁハッシュ使ってるんだからそうだわな・・・"#=index"とすれば"#about"はindexの子供ということ。

add 2008/10/20 15:15
IndexでSceneもButtonも一気にまとめて作ってしまう。実制作ではグローバルナビ系(MovieClipになるのか、データ構造になるのかはさておき)のClassの中で定義する形になると思うが・・・。

//たくさんシーンを作ってみる
var sceneNum:int = 5;
for (var i:int = 1; i <= sceneNum; i++ ) {
	var sceneName:String = "Scene_" + i;
	var myScene:TempScene = new TempScene (sceneName);
	prog.root.addScene( myScene);
	//ボタンの生成
	var tempButton:TempButton = new TempButton({sid:myScene.sceneId});
	tempButton.x = 400;
	tempButton.y = 80+40*i;
	addChild( tempButton );
}
ここでのTempScene というのはSceneObjectを拡張したもの(シーン名表示だけ追記したもの)。TempButton はCastButtonを拡張したもの。コンストラクタでsceneId = new SceneId( initObject.sid );として、シーンIDを引き渡しているだけ。

これで4)の疑問点はややクリア。(progの参照をどこからでもできるか?を検証)
この状態で階層化しない構造のサイトの設定はまぁできたかな・・・。多分・・・。
次は3),5)辺りの階層化した場合の設定とか・・・。


2008/10/20 15:26
あ、CastButtonへのsceneId の引渡しはinitObjectとか使わずに

public function TempButton( initObject:Object = null ) 
{
	super( initObject );
	addEventListener("update", update, false, 0, true);
}
private function update(event):void
{
	trace("update", event.type, event.target.sceneId);
	var txt:TextField = new TextField();
	txt.mouseEnabled = false;
	txt.text = event.target.sceneId;
	addChild( txt );
}
とかで良いかしら?(いや別にevent.targetじゃなくてもsceneIdでも良いけど) まぁ実際はラベルにsceneIdを使うことは無いからここまでやる必要はまったくないのだけど・・。

しかしProgressionの元Classの中に見慣れない記述が結構あって、ドキドキする。

2 Comments

trick7さんのエントリもそうですが、僕自身手探りで勉強していたので、他人がどうやって使っているのかを見せてもらえるのは、すごく参考になります。感謝です。(TдT)/

いえ、こちらこそ手探りなので役に立つか微妙ですが・・・。

Leave a comment

Search and Archives