さて、Twitterで、こんな発言をしてみたものの、やはり気になるProgression Framework。
取り敢えず見るだけでも・・・と思い、ひとまず見れそうな、JSFLインストールパッケージ版をダウンロード、展開してみた。そしたら、中にFlashDevelop用のプロジェクトテンプレートっぽいフォルダがあったので、「お、これを元にFlashDevelop開発できるんじゃない?」と思い、早速チャレンジ。今日のところは、
- FlashDevelop用のProgressionテンプレートを作成
- テンプレートを元にProgression Projectを新規作成
- クラスベース開発の例「Index」と同じものを作成、コンパイル
- Flash Playerで実行
- サイトにアップして公開
と言うところまで出来た。
FlashDevelop用テンプレートを作る。
まず、JSFLインストールパッケージ版を展開して、Progression2-pkg\Configuration\Progression Framework
フォルダに移動する。FlashDevelopのみで開発をするにあたって、必要なのは多分ココだけのはず。
FlashDvelop用のテンプレートは、ここ以下にある以下のファイル・フォルダから作る。
- フォルダ「template」の中にあるプロジェクトファイルと2つのasファイル、そして2つのxmlファイル
- フォルダ「build」の中にある「deploy」フォルダと「src」フォルダ。
ただし、「src」フォルダの中身はテンプレートには含めず、別途クラスパスを通すと言う手もある。
構成は以下のようになる。今回は、build\src
はテンプレートには追加せず、別途クラスパスを通してもらうことにしてみた。src
フォルダには普通にプロジェクトのメインクラスになるDocumentRootの子クラスと、メインシーンとして使うSceneObjectの子クラスを入れてみた。
10 Progression Framework - ClassBase │ easycasting.xml │ project.as3proj │ xml.xml │ ├─deploy │ │ index.html │ │ │ └─shared │ ├─images │ │ get_flash_player.gif │ │ │ └─scripts │ └─com │ ├─asual │ │ CHANGES.txt │ │ LICENSE.txt │ │ README.txt │ │ swfaddress.js │ │ │ ├─deconcept │ │ expressinstall.swf │ │ readme.txt │ │ so_tester.swf │ │ swfobject.js │ │ │ └─pixelbreaker │ swfmacmousewheel.js │ └─src └─$(PackagePath) $(ProjectName).as.template $(ProjectName)Scene.as.template
一番最上位のフォルダ名を「10 Progression Framework – ClassBase」としたのは、FlashDevelopのTemplatesフォルダに格納したときのことを考えてある。また、フォルダ名やファイル名にある$(??)
は、FlashDevelopのテンプレートに使える変数名。
- $(PackagePath)
- パッケージ名をパス化してくれる。ちゃんと階層を全部作ってくれるので便利。
例:org.tarotaro→org\tarotaro\ - $(ProjectName)
- プロジェクト名が入る。
これらの変数名は、フォルダやファイル名だけでなく、ファイル内部でも使える。勿論使いまくる。
今回俺はProgression Framework自体初体験なので、最低限ココは変数化すべきだろうという部分だけ変数を使用してみた。
後は、必要な設定を行う。例えばクラスパスをsrcフォルダに通すとか、Flashが無くてもコンパイルできるように設定を変えるとか。
で、asファイルは、「as.template」と言う拡張子に変える。この「.template」を付けておくと、テンプレートとしてみてくれ、変数を置き換えてくれるようだ。
まぁ色々変更したのだが、全部載せると流石に重いので、zipファイルを公開しておくので、興味があると言う方は見てください。
Progression Framework自体が猛スピードで変化してて、テンプレートを置いといても意味なさそうなんで、公開は止めます。
zipファイル公開が権利的に不味そうであれば、コメントを寄せて頂けると助かります。
なお、このzipファイルでは、build\src
以下をlibと言う名前にして同梱してあります。
でまぁ、このフォルダを、FlashDevelopのApplication Files\Templates\ProjectTemplates
以下に入れる。このフォルダを見ると、他のテンプレートも似たような名前で入ってるのがわかるはず。
Application Filesは、FlashDevelopのメニューにある「Tools-Application Files…」から開ける。
と、これでFlashDevelopの「Project-New Project…」から新規プロジェクト一覧を見ると、一番下にProgression Framework用のプロジェクトが追加されている。
次に、Project Manager内で右クリックしたときに現れるメニュー「Add」から、SceneObjectの子クラスを作成できるようにする。
これを実現するためには、Application Files\Templates\ProjectFiles\AS3Project
にテンプレートとなるファイルを格納してやればいい。ここに、SceneClass.asを「Progression Scene.as.fdt」に改名して入れる。で、中身もFlashDevelop用の変数を使う。
- $(FileName)
- ファイル名が入る。
ここは1ファイルなので、ソースを公開。こいつをコピペして格納してくだされ。
- package $(PackageName) {
- import jp.progression.casts.*;
- import jp.progression.commands.*;
- import jp.progression.events.*;
- import jp.progression.loader.*;
- import jp.progression.Progression;
- import jp.progression.scenes.*;
- /*======================================================================*//**
- * カスタムシーンクラス
- *//*=======================================================================*/
- public class $(FileName) extends SceneObject {
- /*======================================================================*//**
- * コンストラクタ
- *//*=======================================================================*/
- public function $(FileName)( name:String ) {
- super( name );
- }
- /*======================================================================*//**
- * オーバーライド・イベントハンドラメソッドです。
- *//*=======================================================================*/
- protected override function _onSceneAdded():void {
- // ブラウザに表示されるタイトルを設定します
- title = "";
- }
- /*======================================================================*//**
- * オーバーライド・イベントハンドラメソッドです。
- *//*=======================================================================*/
- protected override function _onLoad():void {
- }
- /*======================================================================*//**
- * オーバーライド・イベントハンドラメソッドです。
- *//*=======================================================================*/
- protected override function _onDescend():void {
- }
- /*======================================================================*//**
- * オーバーライド・イベントハンドラメソッドです。
- *//*=======================================================================*/
- protected override function _onInit():void {
- }
- /*======================================================================*//**
- * オーバーライド・イベントハンドラメソッドです。
- *//*=======================================================================*/
- protected override function _onGoto():void {
- }
- /*======================================================================*//**
- * オーバーライド・イベントハンドラメソッドです。
- *//*=======================================================================*/
- protected override function _onAscend():void {
- }
- /*======================================================================*//**
- * オーバーライド・イベントハンドラメソッドです。
- *//*=======================================================================*/
- protected override function _onUnload():void {
- }
- }
- }