【Flash】jsflでコマンドを作ってみよう!
「BLUFF」というボードゲームで全く勝てないminamiです。
Flashには単純作業を自動化できるコマンドという機能があります。
意外と知られていないのですがとても便利なので使ってみましょう!
ヒストリパネルからコマンドを作ってみる
一番簡単なコマンドの作り方は「ヒストリ」パネルの履歴から作る方法です。
ウインドウ→他のパネル→ヒストリ
を選ぶと開くことができます。デフォルトのショートカットはCtrl+F10です。
ヒストリパネルにはFlash内で行った動作が一つづつ履歴として保存されていきます。
例えば矩形ツールで四角を描くと下のように記録されます。
この状態で右下のアイコンを押すと、「コマンドとして保存」というダイアログがでます。 適当な名前で保存します。
するとコマンドに「矩形」コマンドが追加されました! 実行するたびに矩形が描かれれます。
jsflでコマンドを作ってみる。
さて、ヒストリウインドウの右上にある表示オプションから「パネル内のjavascript」という項目を選んでみましょう。すると履歴の項目にjavascriptが表示されます。
実はコマンドはjsflというjavascriptで書かれたAPIを使用しています。javascriptの知識さえあれば、Flashのオーサリング環境でできることのほとんどをコマンドとして記述できます。
先ほどは矩形を描くコマンドを作ってみましたが、今度は少し複雑なコマンドをjsflで記述してみます。
サンプルとして、以下のようなレイヤー構成を作るコマンドを作りたいと思います。
コマンドのファイルはデフォルトでは以下のディレクトリに.jsflという拡張子で保存されています。(WindowsXp,Flash CS3の場合)
C:\Documents and Settings\[ユーザー名]\Local Settings\Application Data\Adobe\Flash CS3\ja\Configuration\Commands
ここに新たにdefaultLayer.jsflというファイルを追加してみます。エディタで下記のようなスクリプトを書いてみました。
//
// defaultLayer
//
// This command was recorded by Adobe Flash CS3.
//
// レイヤー名: bg
fl.getDocumentDOM().getTimeline().setLayerProperty('name', 'bg');
// 新規レイヤー
fl.getDocumentDOM().getTimeline().addNewLayer();
// レイヤー名: mc
fl.getDocumentDOM().getTimeline().setLayerProperty('name', 'mc');
// 新規レイヤー
fl.getDocumentDOM().getTimeline().addNewLayer();
// レイヤー名: label
fl.getDocumentDOM().getTimeline().setLayerProperty('name', 'label');
// 新規レイヤー
fl.getDocumentDOM().getTimeline().addNewLayer();
// レイヤー名: as
fl.getDocumentDOM().getTimeline().setLayerProperty('name', 'as');
// フレームを挿入
fl.getDocumentDOM().getTimeline().insertFrames();
// キーフレームに変換
fl.getDocumentDOM().getTimeline().convertToKeyframes();
//stop
fl.getDocumentDOM().getTimeline().layers[0].frames[1].actionScript = 'stop();'
これを保存するとコマンド欄にdefaultLayerが追加されます。
実行するとレイヤー構成が前述の通りに変わります。
コマンドにはショートカットキーを割り当てることもできるので、 よく使うコマンドは自分好みのキーに割り当てておくと吉です。
まとめ
JSFLのリファレンスは下記でも見ることができます。
まずはコマンドの履歴を見て、それを改造するだけでも割と簡単にコマンドを作れてしまうかと思います。
また、いろいろと役に立つコマンド、拡張機能を公開している人もいますので、 使ってみてはいかがでしょうか!