- 2010-03-09 (火) 12:55
- ActionScript3.0 | Event | JSFL・JSF・JSX | Progression
3月6日(土)に開催された『福岡てら子4』に参加してきました。
そこで、COREXについてお話させて頂いたんですが、かなりグダグダな説明になってしまったので、まとめてみました。
Q1.COREXって何?
JSFLをクラス化出来るようにしたものです。
新規ドキュメントを開いて、新規asレイヤーを作って、stop();を記述したいって場合…
//新規ドキュメントを開く
fl.createDocument();
var path = fl.getDocumentDOM().getTimeline();
//新たにasというレイヤーを作成する
path.addNewLayer("as","normal",true);
//一番上のレイヤーを選択しておく
path.currentLayer = 0;
//1フレーム目に、スクリプトを記述
path.layers[0].frames[0].actionScript = "stop();";
こんな感じのコードを書いて、ファイル名を●●.jsflみたいに保存→実行するかと思います。
ですがCOREXを使うと、以下のようにAS3のクラスファイルの書式と同じような感じで、JSFLのコードを書くことが出来ます。
package{
public class Sample1 {
public function Sample1() {
//新規ドキュメントを開く
fl.createDocument();
//新たにasというレイヤーを作成する
fl.getDocumentDOM().getTimeline().addNewLayer("as","normal",true);
//一番上のレイヤーを選択しておく
fl.getDocumentDOM().getTimeline().currentLayer = 0;
//1フレーム目に、スクリプトを記述
fl.getDocumentDOM().getTimeline().layers[0].frames[0]
.actionScript = "stop();";
}
}
}
(試しにCOREXを使わずに)このスクリプトを、●●.jsflという拡張子で保存→実行してみると…
シンタックスエラーになってしまいます。
ですが、COREXを使うと、このスクリプトをJSFLとして実行してくれます。
Q2.COREXって、どこで使われているの?
Progressionのプロジェクトの書き出し、プロジェクトのアップデートなどに使われています。
Q3.COREXを使いたい場合、どうすればいいの?
COREXを使う場合、いくつかファイルが必要になります。
- COREX.jsflファイル
- 起動用のjsflファイル
- クラス化したjsflcファイル
- jslfccファイル
それぞれ詳しく見ていきます。
COREX.jsflファイル
このファイルは、Progressionをインストールすると、自動的に作成されるファイルです。
どこにあるかは、以下のコードを実行すると、分かります。
fl.trace(fl.configURI);
起動用のjsflファイル
これは自分で作らなければいけません。
作り方は、blog.progression.jp内のF-site資料の中のファイルを参照すると良いでしょう!
COREX.jsflファイル内にも起動コードの作り方が書かれているんですが、こちらは旧バージョンのコードになっています。
ですので、起動ファイルは、F-siteの資料にあるコードを使いましょう!
さて、起動コードのString.fromCharCode以下に、謎の数字が出てきます。
何が書かれているかは、以下のソースを記述すれば、理解出来ます。
var str:String = String.fromCharCode(67,79,82,69,88,32,105,115,32,110,111,116,32,105,110, 115,116,97,108,108,101,100,46); trace(str);
これを実行してみると、String.fromCharCode以下の数字が、COREX is not installed.だということが分かります。
つまり起動コード内を要約すると、「fl.configURIで表示されるパスにCOREX.jsflがある場合は、JSFLを実行する。COREX.jsflが存在しない場合は、COREX is not installed.を表示して、処理を中断する」ということになります。
クラス化したjsflcファイル
これも自分で作らないといけません。
先の新規asレイヤーを作って~のサンプルコードを、Sample1.jsflcという拡張子で保存します。
jslfccファイル
これはCOREXを実行すると、自動的に作成されるキャッシュファイルみたいなものです。(あまり気にしなくて良いかと…)
jsflccファイルは、fl.configURI + COREXフォルダ内に作成されます。
jsflcファイルのタイムスタンプが異なる場合に、再コンパイルが行われるみたいです。
ここまでを軽くまとめると…
Progressionを既にインストールしている方は、起動用のJSFLファイルとクラス化したJSFLCファイルを作成すれば、COREXを使えるよ! ということになります。
先のサンプルでいうと、起動用のJSFLファイルはこんな感じになります。
$={u:fl.configURI+"COREX.jsfl",c:false,$:function(){alert(String.fromCharCode(67,79,82,69,88,32,105,115,32,110,111,116,32,
105,110,115,116,97,108,108,101,100,46))}};(eval(FLfile.read($.u))||$).$
( "Sample1", [] )
あとは、この起動ファイルを実行してあげればOKです。
F-siteの資料の起動用JSFLの説明
%SCRIPT%
起動用のJSFLの( “クラス化したファイル名”, [] )の第三引数に、%SCRIPT%と指定すると、実行中のスクリプトのパスを、出力パネルにfile:///URIの形式で表示してくれます。
%COREX%
第三引数に%COREX%を使うと、COREX.jsflのある場所を基準にパスの設定が可能になります。
COREX.jsflの基本的な使い方の箇所にも、説明が書かれています。
デバッグモード
第四引数のデバッグモードを有効にすると、パッケージ情報などを出力パネルに表示してくれます。
Q4.COREXを勉強するには?
以下のものを参考にすると良いと思います。
- fl.configURI + COREX.jsflファイル
- fl.configURI + Progression/JSFL以下のファイル
- blog.progression.jp内のF-site資料
- JSFLのオンラインマニュアル&PDF
Q5.クラス化出来るということは、継承も可能なの?
可能です。F-siteの資料内にあるサンプルでも、継承が使われています。
先の例でいうと、Sample1を継承したSample2を作ってみると…
●起動用のjsflファイル
$={u:fl.configURI+"COREX.jsfl",c:false,$:function(){alert(String.fromCharCode(67,79,82,69,88,32,105,115,32,110,111,116,32,
105,110,115,116,97,108,108,101,100,46))}};(eval(FLfile.read($.u))||$).$
( "Sample2", [] )
●クラス化したjsflcファイル
package {
//Sample1をインポートする
import Sample1;
public class Sample2 extends Sample1 {
//変数を定義(データ型の指定は不要)
private var _path = fl.getDocumentDOM();
public function Sample2() {
//ライブラリにフォルダを追加
_path.library.newFolder("hoge");
}
}
}
こんな感じにしてあげると、Sample1に新たな機能を付け加えることが可能になります。
気をつけることは何かある?
データ型の指定
COREX.jsflのコメント部分にも書かれていますが、変数や関数のデータ型の指定は不要です。
文字列内のコメント
文字列の中に、コメントを入れたいという場合、注意が必要です。
package{
public class Sample1 {
public function Sample1() {
(略)
//1フレーム目に、スクリプトを記述
fl.getDocumentDOM().getTimeline().layers[0].frames[0]
.actionScript = "stop();";
}
}
}
このコードを、以下のように変更して、実行してみると…
(略) //1フレーム目に、スクリプトを記述 fl.getDocumentDOM().getTimeline().layers[0].frames[0].actionScript = '//stopをかけておく\n\nstop();';
これだと、JSFLが起動してくれません。
(略) //1フレーム目に、スクリプトを記述 fl.getDocumentDOM().getTimeline().layers[0].frames[0].actionScript = '\/\/stopをかけておく\n\nstop();';
コメント部分は、エスケープ処理してあげる必要があります。
他にもいくつか…
(今回のサンプルでは出てきませんでしたが)他にもいくつか注意点があります。
詳しくは、COREX.jsflのコメント部分をご覧下さい。
サンプルをダウンロード
今回作成したサンプルを、ちょっと試してみたいという方は、こちらからDLしてください!
まとめ
こんな感じでCOREXを使うと、AS3っぽくJSFLを書くことが出来ます。
興味がある方は、一度、使われてみては如何でしょうか?
- Newer: svnコマンド
- Older: 面白そうなFlashのイベントが…
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://flabaka.com/blog/wp-trackback.php?p=2271
- Listed below are links to weblogs that reference
- 福岡てら子でCOREX from flabaka