FAMEを始める

FAMEとはFlashout+ASDT+MTASCEclipseの頭文字で、オープンソースのツールだけで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

EclipseActionscriptプラグイン
http://sourceforge.net/projects/aseclipseplugin
EclipseのHelpメニューからインストールする

  1. Help > Software Updates > Find and Install
  2. "Search for new features to install"を選んでNext
  3. "New Remote Site"で以下を入力
  4. "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を選んだ

開発開始

プロジェクトを作る

  1. 「File > New > Project」で New Actionscript2 Projectを選ぶ
  2. Project nameを入力。今回は「test」で。

クラスを作る

  1. Navigatorパネルを右クリックして New > New Actionscript Class
  2. Class Nameを入力(「Test」とした)

Flashoutファイルを作る

  1. Navigatorパネルを右クリックして New > Other > File
  2. 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を使ったりしないといけなくて面倒そうなのでまた今度。

  • -

参考