Progression4の最近のブログ記事

こんにちは。

さて、更新頻度を上げると言いながら既に10日近く経ってしまいましたが、早速Progression4から追加になって、Progression3からのユーザーには意外と知られていないんじゃないかな?という機能の紹介をします。

実はProgression4ではキャストオブジェクトにidを付けると、AddChildコマンドとRemoveChildコマンドにidを指定してあげるだけでaddChildやremoveChildが出来ます。
Progression4の公式サイトにあるサンプルを触った事のある人は知っていると思います。

以下ソースコード例
IndexScene.as

override protected function atSceneLoad():void {
	//scene生成
	var scene1:Scene1 = new Scene1("scene1");
	var scene2:Scene2 = new Scene2("scene2");
	var scene3:Scene3 = new Scene3("scene3");
	addScene(scene1);
	addScene(scene2);
	addScene(scene3);
	//cast生成
	//idのセット
	var sprite1:MyCastSprite = new MyCastSprite( { color:0xff0000, id:"redsq" } );
	var sprite2:MyCastSprite = new MyCastSprite( { color:0x00ff00, id:"greensq" } );
	var sprite3:MyCastSprite = new MyCastSprite( { color:0x0000ff, id:"bluesq" } );
			
	//ボタン
	var button1:MyCastButton = new MyCastButton( { color:0xff0000 , sceneId:scene1.sceneId } );
	var button2:MyCastButton = new MyCastButton( { color:0x00ff00 , sceneId:scene2.sceneId, x:button1.width } );
	var button3:MyCastButton = new MyCastButton( { color:0x0000ff , sceneId:scene3.sceneId, x:button1.width + button2.width } );
			
	addCommand(
		new AddChild(container, button1),
		new AddChild(container, button2),
		new AddChild(container, button3)
	);
}


Scene1.as

override protected function atSceneInit():void 
{
	addCommand(
		new AddChild(container, "redsq")
	);
}
		
override protected function atSceneGoto():void 
{
	addCommand(
		new RemoveChild(container, "redsq")
	);
}


このように恐ろしくソースコードがすっきりするのですが、多人数開発時には向かないかなあと思うこのごろです。なぜならばどこでこのidを設定したのかをきちんと把握してなければならないし、Progressionを知らない人が見たら謎だらけのソースコードになってしまうからです。
全員がきちんと把握していれば問題無いのですが、なかなか難しいかと。
一人で作る分には便利で良いですよね。


デモはこちら

ソースコードはこちら(プロジェクト名がAddChileforIdになっちゃってるのはごめんなさい)

さて次は何を書こうかなあ(早くもネタ切れ疑惑発生)

はい。
ご無沙汰でございました。

もう4月も終わりですね。そして私もとうとうプログラマ定年を迎えてしまうわけですが、たぶん死ぬまでなんらかのプログラムを書いている事と思います。

そして、もう皆さんは既にご存知の事かと思われますが、Progressionの本が出ます。
大変恐縮ながら著者の一人として参加させていただきました。

progression_book.jpg

正直、この方達と名前を連ねる事が許されるのだろうか、いや許されない!などと葛藤もいたしましたが無事出版されるようでほっと胸をなでおろしている今日このごろです。

さて、この本ですが初級者~中級者向けという事でProgressionの入門本という位置づけではありますが、後半はProgressionの機能の逆引きが掲載されており、ドキュメントを読んだだけでは分からなかったあんなことやこんなことが盛りだくさんの内容となっておりますので、既にユーザーである方にも十分お薦め出来る内容になっているのではないかと思います。

Progressionをこれから始める方はもちろん、既に始められている方も是非お手元に一冊置いておいてはいかがでしょうか?

是非、この本を余す所無く習得し「今日から俺はProgressionマスターだ!!」と声高々にお叫び下さい。

そろそろブログの更新頻度を上げる予定です。本で書きたかったのだけれけど、残念ながら漏れてしまった事などをつらつら書いていこうかなと思っていますので、宜しくお願いいたします。

(amazonアフィリエイト貼ろうと思ったけどまだamazonに並んでないみたい)
貼りました!どんどん買って下さい!!
progression_cover.jpg

あけましておめでとうございます。

昨日東京へ戻ってまいりました。
どうやらProgression4のbeta1.3が公開になったようですね。
ざっと変更点、修正点を見てみましょう。
http://progression.jp/ja/download/4.0.1_pb1.3/
・・・・・・

とんでもない量です。

大きなポイントとしては
・オートアップデート機能の追加
・環境設定クラス(~Config)にライセンスがらみの引数追加
・コマンドのResourceまわりのプロパティの追加(resId、resGroup)、変更(groupの廃止)
・ResourcePrefetcherクラス追加(アイドル時に先読みしてくれるすごいやつ)
くらいでしょうか?
(他にも山ほどありますが)

とりあえずの注意点としてはインストール後、リリースビルドの書き出しはbeta1.3での書き出しとなるので、beta1.3準拠への修正が必要になると思われます。(Ver4.0.0であれば大丈夫ですがVer4.0.1のものが対象になります。つまりbeta1.2のものは要修正)

では一つづつ見て行きましょう。

・オートアップデート機能
まず待望のオートアップデート機能追加です。
プロジェクトパネルでプロジェクトを開いて、メニューアイコンの一番右にあるのがアップデートボタンです。
prog4update.jpg
これを押すと、ダイアログが出てアップデートの有無を聞かれます。
Ver3と同じですね。

・環境設定クラス(~Config)にライセンスがらみの引数追加
各~Configクラスの第一引数にactivatedLicenseTypeというStringタイプの引数が追加されています。
通常MITライセンスの場合は指定なしか"basicLibraryLicense"を指定してあげると良いです。
私は良くWebConfig(false,false,false)とやっていたので、アップデート後はとりあえずコンパイルエラーという状況でした。

・コマンドのResourceまわりのプロパティの追加、変更
画像等、外部ファイル読み込みの際に今まではURLをidとして、getResourceByIdを利用してきましたが、beta1.3よりresIdプロパティを指定する事によってresIdの値でgetResourceByIdを利用出来るようになりました。ちなみにresIdを指定しなかった場合は今まで同様にURLをidとして指定可能です。
また、複数ファイルの場合にgroupプロパティを指定していましたが、これが廃止となりresGroupプロパティに変更となりました。
こいつも多用していたものですから、アップデート後、リリースビルドでswf真っ白という状況が多発しました。

・ResourcePrefetcherクラス追加
すごいのが搭載されたと噂のResourcePrefetcherクラスです。
こいつは、Progressionがアイドル状態(何も操作しないでじっとしている)の時に、現在のシーンの位置を把握して、ファイルの先読みを行ってくれる代物です。
デモを作れれば良いのですが、こちらにデモと使い方が書いてありますのでとりあえず横着しますごめんなさい。
http://blog.progression.jp/memo
(このページはmemoという事ですのでいつ消えるかわかりません。あしからず)

Progression本体swfの読み込みがPreloader経由かどうかを判断出来るisPreloadedプロパティも追加されていますね。結構便利。

とりあえずバグ以外で、自分が気になったポイントはこのくらいかなあ。
間違ってる事もあるかもしれませんのでその際はご指摘お願いいたします。

それではいつかまた会いましょう。

時の経つのは早いものでProgression4のベータ版が世に出て2ヵ月になろうとしています。

様々な新機能がありますが、いかんせんドキュメントがASDocのみと(それだけでも凄い事なのですが)いう事もあり、意外と話題になっていないProgression4の凄い機能を紹介したいと思います。

Progression4のWebConfigで作成した場合、swfファイルをパブリッシュした際に以下メッセージが出力される事に気づかれる方も多いかと思います。
prog4html_1.jpg

Progression4ではWebConfigの第3引数、useHTMLInjectorをtrueにする事により(デフォルトでtrueになっています)HTMLファイルを読みにいきます。

簡単なサンプルを作成しましたのでまずはご覧下さい。

http://www.northprint.net/progression_test/HtmlData/

このサンプルをJavaScriptをOFFにしたブラウザで見てくださると分かるのですが、Progression側に読み込ませるデータをHTMLの方で設定しています。

さて、方法なのですが、まずHTMLの方です。(Index.html)
Progression4で書き出されたHTMLにも記述されています。id="htmlcontent"のブロック内に記述します。
※注意:シンタックスハイライターのせいでimgタグが閉じられていませんが、実際はきちんと閉じてください。

HtmlDataTest

このサイトについて

クマンバチ

Progression4ではHTMLの内容を取得する事が出来ます。

トンボ

非常に画期的な機能です。とりわけ、SEO対策に効果があります。

カマキリ

HTML側をルールに沿って作りこめば、JavaScriptOFF時にも同内容のコンテンツを見せる事が可能です。

以下、スクリプト側です。(ImageSceneクラス)

//HTMLデータ参照
if (WebDataHolder(dataHolder).html.toXMLString()) {
	//xml形式に変換
	var contentXml:XML = XML(WebDataHolder(dataHolder).html);
	//pタグの値は配列としてアクセス可能
	trace(contentXml.p[1]);
	_dispText.text = contentXml.p[1];
	//imgタグがあれば
	if (contentXml..img.length()!=0){
		addCommand(
			//画像をロードしBitmapDataとして取得します
			new LoadBitmapData(new URLRequest(contentXml..img[0].@src)),
			function():void {
				//ロードした画像を取得し、表示します
				_imageContainer.bitmapData = BitmapData(getResourceById(contentXml..img[0].@src).toBitmapData());
			}
		);
	}
}


プロジェクト生成時に設定したドキュメントクラスと同名のHTMLファイルを読みにいきます。
htmlcontentブロック内に、シーンパスと同じidのブロックを設定する事で当該シーンの際にシーンオブジェクトのdataHolderより取得出来ます。
そのままではデータとして認識出来ないので
WebDataHolder(dataHolder).htmlと、WebDataHolderクラスを使用してあげます。

詳しくはサンプルソースコードをじっくりご覧になって下さい。

さすがにHTMLからシーンを作成する(やれば出来る様な気もしますが)などという荒業は出来ないものの、xmlやjsonからデータを取得するのとほぼ同様にデータの取得が可能です。

サンプルプロジェクト一式はこちらからダウンロードして下さい。

この機能はProgression4のなかでも結構目玉となる機能なんじゃないかと思います。特に、デプロイしない状態でもFlashのプレビューで表示可能という点が凄い。凄すぎる。ばんざーい。

という事で、みなさんフォーラムもどんどん活用して下さいね。それではー。

またまたご無沙汰でした。

10月10日にProgressionの野良勉強会があったのですが、先約があった為スライドだけお披露目しました。前の日に突貫で作ったので酷い出来ですが、こういうスピード制作も出来るんだぜという悪い見本を晒します。

スライド

・PCの← →キーで動作します。
・ムービーが止まったら、別シーンに飛んで戻ってください。
・動かないな?と思ったら画面の中心をクリックして下さい。
・ムービーのフィルタは全部PixelBender Exchangeにあるやつです。
・一番右の白いボタンでフィルタをクリアします。

ソースコードはこちら
flaファイルを開く為にはFlash CS4が必要です。ピクセルベンダー使ったのでFlash10です。

内容は俺俺コマンド作ろうぜ!的な事ですね。
意外と俺俺コマンドの投稿が少ないので、みんなで作って共有しようよ。と言うのが主な趣旨です。

ちなみに後述したいと思いますが、ピクセルベンダーの使いどころって難しいですよね。。。
動作させてみると分かりますが、CPUが凄い事になります。GPU使ってくれないかなー。



本日、ちょっと席を離れていたすきにProgression4のパブリックベータが開始されておりました。
ベータ版という事ですが、ほぼ完成に近い形になっていると思います。

そこで、早速ですが、新機能となるProgression4 DevToolsの使い方を説明してしまいます。
とても便利な機能ですので、活用しましょう!
※注:DevToolsの利用にはFlashCS4が必要です。

さて、このDevToolsですが、2通りの機能を有しています。

・拡張プロジェクトを作る
・拡張ライブラリを作る

の2つです。
今回は
「拡張ライブラリを作る」の方にスポットを当てます。

例としてpapervision3dライブラリをProgression4で簡単に利用出来る様にしてみたいと思います。


まず、以下の様にProgressionで使用したいライブラリを設置します。 ※フォルダ名は任意です。 prog4dev_1.jpg




次にDevToolsを起動します。 コマンド→Progression DevTools→パッケージを作成するを実行して下さい。 prog4dev_2.jpg




フォルダ選択のダイアログが出ますので、先ほど作成したフォルダを選択します。 prog4dev_3.jpg




OKを押下すると以下ダイアログが現れますので、必要事項を記入します。※何かしらの文字を入力する必要がありますが、デフォルトのままでも作成は可能です。 prog4dev_4.jpg




OKを押下すると、pppackとmxiという2つのファイルが書き出されます。このファイルの位置関係は重要ですので、移動してはいけません。 prog4dev_5.jpg prog4dev_6.jpg




後はAdobe Extension Managerを起動して、ファイル→拡張機能の作成を実行し、先ほど生成されたmxiファイルを指定してmxpファイルを作成します。 prog4dev_8.jpg




そして完成したmxpファイルをインストールし、Progression4の新規プロジェクト作成パネルを見てみると。。。

見事、外部ライブラリに先ほど作成したライブラリが追加されています!
prog4dev_7.jpg



さて、いかがでしょうか?ライブラリを用いたプロジェクトを作成する際、非常に便利になるのがお分かりになるかと思います。

ちなみに作るのがめんどくさい方は、私の方で3つほど作成しましたのでご利用くださいませ。(BetweenAS3に関しましてはnium先生が作成したものをベースにしています。こちらは完成したpppackファイルにさらに手を入れる事によってプレイヤーのバージョン等に応じた書き出しにも対応しています。)
※現時点で最新のバージョンで作成しています。

sketchbook

papervision3d

BetweenAS3

このアーカイブについて

このページには、過去に書かれたブログ記事のうちProgression4カテゴリに属しているものが含まれています。

前のカテゴリはprogression3です。

次のカテゴリはラーメンサラダを広める会です。

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