Progression Frameworkを、FlashDevelopだけで使ってしまおうと言う挑戦。
さて、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ファイルなので、ソースを公開。こいつをコピペして格納してくだされ。
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 {
}
}
}




こんにちわ、
いろいろとテストありがとうございます!
FlashDevelop への対応ですが、現状の Flash のみ対応でもすでに一人で検証できる範囲を超えている& FlashDevelop のみのコンパイルをしたことがないので、公式にはサポートできていない状態です。
ただ、fla やその他のファイルは Web サイトを作成する為のテンプレート機能に使っているだけですので、テンプレートが不要なのであればクラスパッケージのみ使用してコンパイルして頂いても、swf 単体の動作であれば通常通りに、サーバーにアップする際も一部を除いて問題なく動作すると思います。
#ブラウザ同期機能を使用する場合、swfaddress.js の一部に修正をしているので同梱のものを使用する必要があります。
ライセンスは MIT なので、普通に使っていただく分には何も問題がないと思います。
むしろ、好き勝手に遊んでいただいて構いません。
他にも参考にされる方がいると思いますので、こっそりリンク追加させていただいちゃいました
。
http://progression.libspark.org/trac/wiki/Documents/Tutorial
コメント by taka:nium — 2008年3月18日 火曜日 @ 10:15:30
>taka:nium さん
コメントありがとうございます!
flaファイル無くても問題ないとの事で、安心しました。
これからどんどん試してみたいと思います!
しかもライセンスについても教えていただいてホント申し訳ないです
コメント by 太郎 — 2008年3月19日 水曜日 @ 2:27:28