Results tagged “Progression”

Nov 082008

Progressionのテンプレートファイル for FlashDevelop

Nov 072008

Progression日記:CastSpriteをネストさせすぎてダバダバ

このエントリーは日記です。

いやー調子にのってCastSpriteを激しく入れ子にしたものを作って、SceneObjectの"_onUnload"から"RemoveChild"で引っ掛けて、その子、孫、ひ孫へと"_onCastRemoved"で連鎖させていったらコマンドの発動順番が訳分からなくなった。これはあんまネストさせないで、深度を同じとかにして管理しないと把握できないなぁ・・・。

なんかよく分からないのは、

ICastObject オブジェクトが RemoveChild コマンド、または RemoveAllChild コマンド経由でディスプレイリストから削除された場合に送出されます。 このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。

してないCastSpriteも"_onCastRemoved"を呼び出されていること・・・。
親のCastSpriteがremoveChildされたら自動的にRemoveAllChildrenが実行されたりするのだろうか?

まぁちょっと今の構造はややこしすぎて自分でも分からないのでもう一度組みなおして整理する。

Nov 062008

Progression 3.0.6 をリリース

progression.jp | 開発 | リリースノート | 3.0.6

新しいバージョンがリリースされました。

で、アップデートしてみました。
自分の環境は
・Flash 用標準パッケージ(日本語版)
・FlashDevelop
という感じなので、mxpを更新インストールして、Flashを起動。
Progressionプロジェクトパネルの「アップデート」ボタンをクリックして、更新したいプロジェクトフォルダを選択してアップデート。

自動的にプロジェクトフォルダの中に含まれる(src以下なのか?はちょっと分からなかったですが)FLAファイルが自動的に開かれてアップデートされていきます。で、更新完了。

で、コンパイルしてみると、エラーが出てしまった。

ちとこれまだどこに原因があるのか分かっていませんけど、分かったら追記しておきます。

Continue reading Progression 3.0.6 をリリース.

Nov 052008

progression検証 #15 CastImageLoaderをコマンドで監視編

なんだかまさに付箋状態になりつつある"Progression3"カテゴリ・・・。
ということでもう一つ追加。

外部からイメージを読み込むのに使うクラス"CastImageLoader"。これは"flash.display.Loader"のサブクラスなので"LoadChild(←flash.events.EventDispatcher)"と違ってコマンドで処理待ちしてくれない。
これをコマンドで監視できるようにするのはどーすればよいか?というお話。
"Command"クラスを継承して"CastEvent.CAST_LOAD_COMPLETE"でイベントを排出したり、"executeComplete();"したりすればなんかいけそうな気もするが、ちょっとそれは冗長な気がする。

"Func"クラスを用いて、ごにょごにょしたりしてコマンド監視下に置けないかしら?
"after"メソッドの中でゴニャゴニャしてもいけそうな気もするが、今頭がまわらないので忘れないようにメモ。

Continue reading progression検証 #15 CastImageLoaderをコマンドで監視編.

Nov 042008

progression検証 #14 CastButton編

例えば"/index/food"というシーンがあって、その子供に"/index/food/curry"、"/index/aho/rice"というシーンがあるとする。

で、"/index/food"のシーンではデフォルトで自動的に"/index/food/curry"を表示するようなつくりにする場合。つまりfoodシーン自体は要素を持たない形而上的な存在で、任意(もしくはランダム)で子供シーンを表示する。という場合にSceneID="/index/food"が設定されたCastButtonを動作させないようにすることはできるか?

ということを、元々そういうプロパティがあるのか?も含めて検証してみる。
ちなみにCastButtonやSceneObject等が持っている"group"はそういう用途に使ってもよいのか?まだ良く分かっていない。(実際何に使うべきプロパティなのかイマイチ理解できてない、多分一括消去とかだとは思うんだけど・・違うかな?)

まぁ"progression.current"とかを使えば力業でできなくも無い。

Nov 042008

progression検証 #13Background編

ProgressionのBackgroundクラスにどう取り扱ってよいのか迷い中。
Progressionクラスを初期化すると自動的に追加されるインスタンスなのだけど、"container"と違って、progressionに参照プロパティが無い。で、

Progression インスタンスに関連付けられた汎用的に使用可能な表示オブジェクトを提供します。

と言うことで、ライブラリに実際に"jp.progression.core.casts.Background"クラスでMovieClipオブジェクトを関連付けるような使い方になる。

一応Background - Progression 3.0 - API Referenceな感じで色々メソッドとかあるんだけど、実際これどこからアクセスしてよいのか見当がつかない。(progression.stageにもprogression.rootにもなさそうだけど、そもそもnameもidも定義されているのか?がよく分からない・・)

何か根本的なことを見落としているような気もするのだが・・・。なんだろう??

Continue reading progression検証 #13Background編.

Nov 032008

progression検証 #12複数外部データの読み込み管理編 [

複数の外部ファイルを先読みしてからコンテンツをスタートさせたい場合、Progression3でどうするか?の検証。複数外部ファイルの読み込みのクラスは幾つかあるのですが、(muraken/GroupLoader - Spark projectbulk-loader - Google Codemasapi - Google Codequeueloader-as3 - Google Code)、今回はProgressionのCommandと連動して処理するような形のものを作ってみようかと・・・。

で、まずCommandクラス部分から解析のところで悪戦苦闘中・・・。
はぅ・・・涙
今日中に何とかしたいと思います。
上手くいったら追記します(汗

Nov 012008

progression検証 #11外部データの読み込み、その他の処理編

これまでで、外部XML、画像の読み込みができるようになりました。今回は一旦立ち止り、"LoadURL","CastImageLoader"等のエラー処理について検証。

まずxmlから。以前に書いたものを整理すると
#CODE-1

var config:LoadURL = new LoadURL(new URLRequest("../contents/data/config.xml"));
config.after(function():void
	{
		trace("設定読み込み完了");
		new Conf(config.data);
	}
)
var list:SerialList = new SerialList();
list.addCommand(
	,config
	,new Goto(prog.firstSceneId)
);
list.execute();
これに、基本的な各種イベント監視の追加と、"LoadURL.error"を追加。 #CODE-2
config.addEventListener(Event.COMPLETE, function():void { trace("Event.COMPLETE!!") } );
config.addEventListener(IOErrorEvent.IO_ERROR, function():void { trace("IOErrorEvent.IO_ERROR!!") } );
config.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function():void { trace("SecurityErrorEvent.SECURITY_ERROR!!") } );
config.error(function():void
	{
		trace("config.error");
	}
)
この状態で"URLRequest"のURL値を存在しないファイルにすると、以下のエラーが出ます。
Continue reading progression検証 #11外部データの読み込み、その他の処理編.

Oct 312008

progression検証 #10 外部データ(jpg)の読み込みIndex(CastDocument)編

progression検証 #9 外部データ(xml)の読み込みIndex(CastDocument)編の続き。Index(CastDocument)内での初期化作業で外部xmlの読み込みまではできるようになりました。次に画像系の先読みを初期化で行ってみようと思います。(例えば背景イメージの先読み等)

先のエントリーの最後に「CastImageLoaderとLoadChildのどちらを使うか?」を悩んでいましたが、まだ明確にどちらが良いのか?は分かっていませんが、とりあえず "CastImageLoader"を使って進んでいきます。先エントリのIndex._onInitの中に以下のように追記していきます。
#CODE-1

//背景の読み込み( CastImageLoader)
var _bgLoader:CastImageLoader = new CastImageLoader();
_bgLoader.addEventListener(CastEvent.CAST_LOAD_COMPLETE, function():void
	{
		//画像貼り付け
		prog.container.addChild(_bgLoader);
		_bgLoader.addCommand(
			new Trace("画像の読み込み完了")
			// シーン移動
			,new Goto(prog.firstSceneId)
		)
	}
)
var list:SerialList = new SerialList();
list.addCommand(
	// 設定ファイルの読み込み
	,config
	// 背景画像の読み込み
	,function():void {
		_bgLoader.load(new URLRequest(Conf.getAlias("bg").url));
	}
	,new Trace("#step-1")
);
list.execute();
という感じになりました。 "_bgLoader.load"の実行がこの形が適切なのか分かりませんけど、この命令の後の"new Trace("#step-1")"は"bgLoader"の読み込みを待たずに発動してしまうので、シーン移動のコマンド"new Goto(prog.firstSceneId)"を"bgLoader"の"CastEvent.CAST_LOAD_COMPLETE"イベントの中に入れています。今は他の処理のことも考えてaddCommandの中に入れていますが、いれずに"prog.goto(prog.firstSceneId);"でもOK。

複数ファイルを読み込んだりする場合は、それらを管理するクラスを作って処理した方が良さそうですが、とりあえずこんな感じで・・・・。あっているのだろうか??

あとは"bgLoader"を貼り付けている先
"prog.container.addChild(_bgLoader);"
にしているのだけど、本当は"jp.progression.core.casts.Background"に貼り付けたいのだが、アクセス方法が良く分からない・・・。これどこにあるんだろう?

Progression インスタンスに関連付けられた汎用的に使用可能な表示オブジェクトを提供します。

と書かれているが、"Container"は"progression.container"があるけど・・・。

Continue reading progression検証 #10 外部データ(jpg)の読み込みIndex(CastDocument)編.

Oct 312008

progression検証 #9 外部データ(xml)の読み込みIndex(CastDocument)編

前回(progression検証 #8 外部データをpreloaderで読み込むのをやめて挫折中)の挫折から、みなさまからアドバイス頂いて、Index(CastDocument)で読み込んでみます。

"CastDocument"クラスには一応"addCommand"があるのですがうまく動かないので(理由は良く分からない)、むらけんさんに教えてもらった形で、コマンドリストクラス"SerialList"で設定してみます。


オデは外部リンク、外部ファイル等のURL等をconfig.xmlの中で管理しているので、それを初期化の中で読み込むようにしてみます。("Conf"と言うのは設定情報管理を行うオリジナルクラスです。)"Index"クラスの"_onInit"の中に以下のように書いてみます。
#code-1

var config:LoadURL = new LoadURL(new URLRequest("../contents/data/config.xml"));
config.after(function():void
	{
		trace("設定読み込み完了");
		new Conf(config.data);
	}
)
var list:SerialList = new SerialList();
list.addCommand(
	,config
	,new Goto(prog.firstSceneId)
);
list.execute();

動作としては"config.xml"の読み込みが完了してから最初のシーンに移動するという感じです。これでIndexクラスでの初期化作業も出来そうです。(実際にはLoadURLのエラー処理、loading状況の情報取得等色々入れないといけないですが・・) ありがとうございました!

ADJ:2008/11/01 1:14
すいません、上記の部分環境を家に変えて実行したら"new Conf(this.data);"の部分で

[ERROR] コマンドで ReferenceError エラーが発生。
[ERROR] コマンドで ReferenceError エラーが発生。

になりました。Commandに入れていたのか記憶が定かじゃないですが、"new Conf(config.data);"が正しい記述になります。(多分w)
ということで上記コード修正しておきました。

Continue reading progression検証 #9 外部データ(xml)の読み込みIndex(CastDocument)編.

Oct 302008

progression検証 #8 外部データをpreloaderで読み込むのをやめて挫折中

前エントリー(apeirophobia: progression検証 #7 外部データをpreloaderで読み込んでみる(XML編))で、Preloaderで諸々初期設定等の外部ファイルを読み込んでまとめてloading処理してしまおうと考えていたのですが、実装的(標準ではindex.swfのloadingのみに対応)、制作フロー(indexをオーサリングしているとき、外部データが無いのでpreloadからコンパイルして動作確認を取らないといけない)的にも、あまり効率的ではないと判断して、index.swfの中で初期化フローを持つ方向にシフトしようと思います。

Continue reading progression検証 #8 外部データをpreloaderで読み込むのをやめて挫折中.

Oct 302008

progression検証 #7 外部データをpreloaderで読み込んでみる(XML編)

エラー処理などは放り出して、先に進みます。前回のエントリーではIndexSceneで外部XMLを読み込みましたが、最初のLoading時に設定系外部XMLやらを読み込む事例は多いかと思いますので、次はPreloaderで外部ファイルを読み込んで、SceneObject等からそのデータにアクセスするのはどーすればよいのか試してみます。

まず前検証でIndexSceneに設定した外部XMLの読み込みをPreloaderに移植します。
#code-1

		private var _loadURL:LoadURL;
		public var myXML:XML;
		protected override function _onCastLoadStart():void {
			_loadURL = new LoadURL(new URLRequest("contents/data/products.xml"));
			addCommand(
				new Trace("Preloader commands")
				,this._loadURL.after(parseXML)
				,new Trace("このコマンドはデータ読込み後に実行されます?")
			);
		}
		private function parseXML():void {
			trace("parseData");
			myXML = new XML(_loadURL.data);
			trace(myXML);
		}

こんな感じでOK。 実行すると外部XMLの読み込みが終わってからIndexが展開されます。ステキ。


Continue reading progression検証 #7 外部データをpreloaderで読み込んでみる(XML編).

Oct 292008

progression検証 #6 外部データを読み込んでみる(XML編)

この問題(apeirophobia: Progressionの中でPV3D)がまだクリアになっていないのだけど、ちょっと先に進みます。今回は外部データの読み込みを試してみます。

一般的に外部データとして想定されるものはxml,json,jpg,swf等があります。as3になってバイナリも読み込めるのですがそれはまた別の話で。

最初に至極まっとうにXMLでやってみます。IndexScene.asの_onLoadの中に組み込んでみます。
#code-1

private var _loadURL:LoadURL;
~
protected override function _onLoad():void {
	_loadURL = new LoadURL(new URLRequest("test.xml"));
	_loadURL.after(parseXML);
	_loadURL.execute();
}
private function parseXML():void {
	var myXML:XML = new XML(_loadURL.data);
	trace(myXML);
}

こんな感じ。 次にcommandを使ってみる。

Continue reading progression検証 #6 外部データを読み込んでみる(XML編).

Oct 242008

progression検証 #番外 Progressionの中でPV3D

を今やっていたりするのだけど、何故だかオーサリングプレビューではpreloader経由でも表示されるのに、HTML経由だと表示されない。一応index.swfは読み込まれているのだけど、PV3D部分が表示されない。HTMLからindex.swfを直接読むようにしても表示されない。
ただProgressionを使わず直接PV3Dを展開すると表示される。
上手くSceneが制御できてないのかしら??
なんかものすごく初歩的なミスのような気がするが、頭が回らない。

ムフー。
寝る。


Oct 212008

progression検証 #5 フォルダ構成を変えてみる

Flash系のお話は休憩して、HTML系のお話。
progressionプロジェクトではサーバにアップするデータは"deploy"フォルダにまとめられています。構造は

index.html
corssdomain.xml
index.swf
preload.swf
└/contents
 ├/images/(デフォルトではFlash Playerのバナー)
 ├/objects/(version.swfのみ)
 ├/scripts/(swfAddress,swfobject,swfforcesize,progression.js)
 └/styles/(default.css)

という形になっています。
swf系は"swf"と言うディレクトリにまとめたい性格なので、変更してみます。

まず、"swf"フォルダを作り、その中に"index.swf","preloader.swf"を移動します。
次に"index.html"の中の"swf"参照先を変更します。

var so = new SWFObject( "preloader.swf", "external_flashcontent", "640", "480", "8" );
var so = new SWFObject( "swf/preloader.swf", "external_flashcontent", "640", "480", "8" );
に変更。 Flaファイル"index.fla"、"preloader.fla"の書き出し先を"/swf"以下に設定。 この時点で"preloader.fla"をパブリッシュするとプレビューでは"index.swf"をloadしてくれる。ただし、"index.html"からでは"index.swf"はLoadされない。これは"swf"の基点がhtmlベースになっているため。でオデは普通swfObjectに"so.addParam( "base", "." );"という一文を追加して、swf基点に書き換えてしまうので、とりあえずそれをやってみた結果は、 サーバ上:正常動作。 ローカル:"index.swf"が読み込まれない。 というちょっとアレ?な結果。

で、"Preloader.as"のコンストラクタに"useSWFBasePath = false;"という設定がある。
このuseSWFBasePath は

url プロパティの値に相対パスを使用した際に、SWF ファイルの設置されているフォルダを基準とするかどうかを取得または設定します。 ただし、読み込み処理が開始された以降は設定を変更することはできません。

ということらしい。"base"と同じような働きをするような感じ・・。
ということでこれを使ってみる。

Continue reading progression検証 #5 フォルダ構成を変えてみる.

Oct 202008

progression検証 #4 シーンに色々貼り付けてみる(jp.progression.casts)

続いてSceneに色々貼り付けるのに"jp.progression.casts"系を使用してみます。
まずは"AboutScene"。前回で作成した適当なMovieClip"div_scene1"とJPG画像をcast系に変更。bmは以前は"name"を指定していたものを"id"に変更。(一応nameもありますが、getInstanceByIdを検証するためidにしておく)

	mc1 = new div_scene1() as CastMovieClip;
	//bitmap		
	var bmd = new bm_face(0, 0);
	bm = new CastBitmap(bmd);
	bm.id = "face";
	bm.x = 100;
	bm.y = 200;

で、とりあえずコンパイルしてみると"AboutScene"を表示させるタイミングでエラーが発生。

TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。

さてこれは何が原因かいな?ということで、考えると"as CastMovieClip"はちと強引だったかしら?ということで、ライブラリの"div_scene1"のリンケージ設定で、基本クラスを"jp.progression.casts.CastMovieClip"に設定。 これでOK。

さて続いて"AboutScene"で生成されて、"ContactScene"で削除される画像のオブジェクトの処理をするために"ContactScene"の中を設定。"_onInit"の中で

var bm:CastBitmap = getInstanceById("face") as CastBitmap;
if (bm)
{
	progression.container.removeChild(bm);
}

としてコンパイル。 "AboutScne"を表示後、"ContactScene"を表示すると、きちんとbm(id=face)が削除される。 ここまではOK。

ただし、その後他のシーンに遷移してまた"ContactScene"に戻ったり、いきなり"ContactScene"に入ったり、用はCastBitmapオブジェクトが存在しない状態だとエラーが出る。

ArgumentError: Error #2025: 指定した DisplayObject は呼び出し元の子でなければなりません。

"if (bm)"では駄目っぽい。
ちと

var bm:CastBitmap = getInstanceById("face") as CastBitmap;

で何が戻ってきているのか?みてみると

[CastBitmap id="face" name="instance26" group="null"]

な感じ。addChildされているかどうか?は戻り値には関係ないっぽい。 ちなみに"getChildByName"だとremoveChildしたObjectは"null"で戻ってくる。 なので、addChildされているか否かを判定する必要がある・・。 さて・・・。ちょっとひとまずここで休憩。

Continue reading progression検証 #4 シーンに色々貼り付けてみる(jp.progression.casts).

Oct 202008

progression検証 #3 シーンに色々貼り付けてみる(標準)

ヨロヨロ進行中。
さて、シーンの中に普通にMovieClipやら、イメージやらを貼り付けてみる。
SceneObjectは[SceneObject Inheritance →EventIntegrator Inheritance →flash.events.EventDispatcher]という継承なので、DisplayObjectでは無い。ここは一応注意。じゃあDisplayObjectは具体的にシーンごとに分離されているのか?と言われると多分違う。恐らくドキュメントルートにSceneに関係なく配置されているのだと思うが、Sceneをまたいで存在するDisplayObjectにどーアクセスするのか?はまだ分からない。

少し話しがそれたので、元に戻す。
ガイドに書いてあるaddCommandの形でとりあえずMovieClipとBitmapDataを貼り付けてみる。
ライブラリでMovieClipを"div_scene1"、JPG画像を"bm_face"でクラス定義。
Sceneのコンストラクタで

	public var mc1:MovieClip;
	public var bm:Bitmap;
	public function AboutScene( name:String = null, initObject:Object = null ) 
	{
		super( name, initObject );
		page = new AboutPage();
		mc1 = new div_scene1() as MovieClip;
		var bmd = new bm_face(0, 0);
		bm = new Bitmap(bmd);
		bm.x = 100;
		bm.y = 200;
	}
こんな形で生成。 んでもって"_onInit"で
	addCommand(
		new AddChild( progression.container, mc1),
		new AddChild( progression.container, bm),
		new AddChild( progression.container, page)
		);
こんな感じでキャスト登録。 同様に"_onGoto"できちんと"RemoveChild"。
	addCommand(
		new RemoveChild(progression.container, page),
		new RemoveChild(progression.container, bm),
		new RemoveChild(progression.container, mc1)
	);
で、OK。 本当は用意されているjp.progression.casts Package - Progression 3.0 - API Referenceこの辺のキャスト系を使わないと、あまりAddCommandの中に入れている意味は無いのだと思うけど、まず整理の為に標準のやり方でやってみる。

次にaddCommandの中で定義しないで、直接貼ってみる。

Continue reading progression検証 #3 シーンに色々貼り付けてみる(標準).

Oct 202008

progression検証 #2 シーンの階層化

続き、ちと横道にそれて子供のシーン、孫のシーンを作ってみる。
Index.asの_onInitの中で定義された"contact"シーンの子供、孫を作ってみる。

//子供シーン contact_1
var contact_1:TempScene = new TempScene("contact_1");
contact.addScene(contact_1);
// contact1 Child button を作成する
var contact_1_bt:TempButton = new TempButton();
contact_1_bt.x = 200;
contact_1_bt.y = 150;
contact_1_bt.sceneId = contact_1.sceneId;
addChild( contact_1_bt );
//孫シーン contact_1_1
var contact_1_1:TempScene = new TempScene("contact_1_1");
contact_1.addScene(contact_1_1);
// contact1 Child button を作成する
var contact_1_1_bt:TempButton = new TempButton();
contact_1_1_bt.x = 200;
contact_1_1_bt.y = 180;
contact_1_1_bt.sceneId = contact_1_1.sceneId;
addChild( contact_1_1_bt );
こんな感じ。 まぁなんて簡単。ステキング。

ただ開発の際に子供コンテンツが外部SWFだとして、それが複数の子供を持つ場合等、制作過程で子供コンテンツで動作確認を取りながら開発とか作業分担は難しいのかなぁ?
いや、そもそもSceneに対して外部コンテンツを定義できるのか?が良く分かってないのだけど・・・。(Sceneの中で外部SWFを読み込む感じかしら?) 例えばその場合その外部SWFの中で再びprogressionを定義して階層化したりしたらどうなるのだろうか?(Staticでは無いので一応可能?)
なんか知りたいことが山のように出てきて中々進めない・・。

まぁ一つ一つ検証してみよう。

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を割り振りできなくなった?(多分できるけど)

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

Continue reading progression検証 #1.
  1 2

Search and Archives

Tags