FAMEを始める
FAMEとはFlashout+ASDT+MTASC+Eclipseの頭文字で、オープンソースのツールだけでFlashを作るというものです。
前にも試したことがあったけんだど、最初の方ではまってしまい投げ出していました。よって今回は再チャレンジ。
以下、FAMEの取っ掛かりの部分のメモ。
色々インストールする
http://d.hatena.ne.jp/shibacho/20051009 を参考に。日本語ドキュメントが少ないのでこういうページがあると助かります。
Eclipse (3.1)
http://www.eclipse.org/
解凍してC:\直下に置いた (C:\eclipse)
MTASC (1.12)
Actionscriptコンパイラ
http://www.mtasc.org/
解凍してEclipseフォルダ内に置いた (C:\eclipse\mtasc-1.12)
ASDT
EclipseのActionscript用プラグイン
http://sourceforge.net/projects/aseclipseplugin
EclipseのHelpメニューからインストールする
- Help > Software Updates > Find and Install
- "Search for new features to install"を選んでNext
- "New Remote Site"で以下を入力
- Name:ASDT
- URL:http://aseclipseplugin.sourceforge.net/updates/
- "Actionscript Development Tool"を選んであとは画面の指示通りに
Flashout (0.2.1.6)
Eclipse上でコンパイルしたSWFやログを表示するツール
http://www.potapenko.com/flashout/
解凍したpluginフォルダとFlashout.asをそれぞれ配置する
- pluginフォルダをEclipseフォルダに投げ込んで上書き
- Flashout.asをmtascフォルダのstd8内に置く (C:\eclipse\mtasc-1.12\std8\Flashout.as)
Flashoutをインストールしたあとは再起動が必要。うまくいかないときは-cleanオプションをつけてEclipseを起動すると良いらしい。コマンドラインとかで「c:\eclipse\eclipse.exe -clean」ね。
一度うまくいかなくて最初から全部インストールしなおした。
インストール後の設定
Eclipseの「Window > Preference」でActionscript2とFlashoutの設定をする。
EclipseのPerspectiveを変更
Window > Open PerspectiveでActionScript2を選んだ
開発開始
プロジェクトを作る
- 「File > New > Project」で New Actionscript2 Projectを選ぶ
- Project nameを入力。今回は「test」で。
クラスを作る
- Navigatorパネルを右クリックして New > New Actionscript Class
- Class Nameを入力(「Test」とした)
Flashoutファイルを作る
- Navigatorパネルを右クリックして New > Other > File
- test.flashoutを作る
test.flashoutを開いて、下部の「Compilation status/preference」を選ぶ。
- Path to swfとRootclassタブ
- Root classにはWorkspace内のtest\src\Test.asを指定した。
- swfのパスはtest\test.swfにした。
- Additionalsタブ
- コンパイルパラメータ「-header 640:480:24 -version 8」と入力。swfのサイズ(640x480)とフレームレート(24fps)ね。
traceする
とりあえずTest.asを実行してtraceしてみる。
Test.as
class Test { public static function main() { // do something trace(Flashout.DEBUG + "Hello FAME"); } }
コンパイルするにはtest.flashoutの上部の「Compile」を押すかShift+Ctrl+Enter。
これでコンパイルすると「TRACEクラスが無い」などと怒られた。
最近のmtascの変更で「TRACE()」が「trace()」になったけど、Flashout側がそれに対応していないのが原因らしい(たぶん)。解決するにはFlashout.as(C:\eclipse\mtasc-1.12\std8\Flashout.as)を開いて、TRACEを全部traceに置換するとうまくいった。
test.flashoutのLoggerタブ内にメッセージが表示されてればオッケー。
MovieClipを継承したクラスを作る
何かattachMovieしたいのでMovieClipを継承したクラスを作ってみる。
Testクラスと同様にMyMCクラスを作った。
/* 注:これだと動かない */ class MyMC extends MovieClip { public function MyMC() { lineStyle(3, 0x0000FF, 100); moveTo(-10, -10); lineTo(10, 10); moveTo(10, -10); lineTo(-10, 10); } }
けど、これをattachMovieしようとしてもできない。なぜならFlashのライブラリパネルでやっていたクラスとシンボルのリンケージをしていないから。
どうするかというと、以下のようにSymbolNameとSymbolOwnerを指定して、Object.registerClassで関連付けする。
class MyMC extends MovieClip { static var SymbolName = "__Packages.MyMC"; static var SymbolOwner = MyMC; static var SymbolLinked = Object.registerClass(SymbolName, SymbolOwner); public function MyMC() { lineStyle(3, 0x0000FF, 100); moveTo(-10, -10); lineTo(10, 10); moveTo(10, -10); lineTo(-10, 10); } }
で、これをTest.asの方でattachMovieするとよい。
class Test { public static function main() { var id = 0; _root.onMouseDown = function() { _root.attachMovie(MyMC.SymbolName, "mymc"+id, _root.getNextHighestDepth(), { _x: _root._xmouse, _y: _root._ymouse }); id += 1; } } }
SymbolNameで"__Packages."を付けないといけない点に注意。attachMovieのシンボル名も同様。これに気づかず、かなりはまって小一時間ふて寝した。グスン。
とりあえず、これでようやくFAMEで開発できそうです。いい時代になったもんだ。
今後
mtascだけだと画像やフォントを埋め込めないが、swfmillを使うとそれらの外部ファイルをswfに埋め込んだりできる。FAME+swfmillでFAMESと言うんだとか。
これも必要そうなのでやってみよう。
あとはmtascでコンポーネントを使いたい。
http://www.mtasc.org/の真ん中辺りにやり方が書いてあるけど、Flashを使ったりしないといけなくて面倒そうなのでまた今度。
- -
参考