株式会社antsのホームページへようこそ。

Flash JavaScript APIでオーサリングを効率化(その1)

0
Posted in Lab. By tanaka

Flashでオーサリングをしていて、機械的な単純作業に時間を取られるのはよくあることだと思います。大量の画像を配置したり、大量のムービークリップの中心点を後で変えたくなったり……。機械にできることは機械に任せて、もっとクリエイティブな部分に時間を割り当てたいものです。それを支援してくれるのがFlashのコマンド機能です。これから何回かに分けてそのお話をしていきたいと思います。

早速簡単なコマンドを作ってみましょう。新規のFlashドキュメントを開いてください。ステージに適当な矩形を描いて、ムービークリップシンボルに変換します。シンボル名はFlashに任せて、そのままOKを押してください。

■Flashで矩形をシンボルに変換
Flashで矩形をシンボルに変換

ムービークリップを作成したら、Flashのメニューから[ウィンドウ]→[その他のパネル]→[ヒストリ]を選択して[ヒストリ]パネルを表示してください。[ヒストリ]パネルは、Photoshopの[ヒストリー]や[アクション]といったパネルと似たようなもの言えば機能がピンとくる方も多いでしょう。ここでは、先ほどムービークリップを作成した履歴が残っているのが確認できます。

この履歴をコマンドに変換しましょう。1番目の履歴をクリックした後、シフトキーを押しながら最後の履歴をクリックして、すべての履歴を選択した状態にしてください。その状態で[ヒストリ]パネルのオプションメニューから[コマンドとして保存]を選択します。コマンド名は「四角いムービークリップ」とでもしておきましょう。

■ヒストリをコマンドとして保存
ヒストリをコマンドとして保存
■コマンド保存のダイアログ
コマンド保存のダイアログ

では、保存したコマンドが使えるかどうか試してみます。先ほど作ったムービークリップはステージから削除して構いません。Flashの[コマンド]メニューを表示すると「四角いムービークリップ」が追加されています。これを選択すれば、先ほどと同じ矩形が作成されるでしょう!

■自作のコマンド
自作のコマンド

と、一応コマンドはできましたが、ただ四角いムービークリップができてもあまり嬉しくありませんね。ちょっと手を加えて少しでも意味があるコマンドにしましょう。先ほど作ったコマンドがどこに保存されているかというと、次のディレクトリになります。

Windows
C:\Documents and Settings\<ユーザ名>\Local Settings\Application Data\Macromedia\Flash 8\ja\Configuration\Commands\
Mac OS X
/Users/<ユーザ名>/Library/Application Support/Macromedia/Flash 8/ja/Configuration/Commands/

そこにある「四角いムービークリップ.jsfl」というJSFLファイルがコマンドの実態です。JSFL(Flash JavaScript)は、Flashでのオーサリング作業をJavaScriptを使って補助するためのプログラミングインターフェースで、Flash MX 2004から使用できます。このJSFLファイルの名前がそのまま[コマンド]メニューに表示されるわけです。

JSFLファイルをFlashまたは任意のテキストエディタで開いてください。先ほど[ヒストリ]パネルで履歴として見ていた操作が、それぞれJavaScriptとして記述されています(JavaScriptは[ヒストリ]パネルでも表示させることができます)。操作内容もコメントで書いてあって分かりやすいですね。では、矩形を作成した部分を次のように変更してみましょう。

■JSFLのソース
JSFLのソース

当初は適当なサイズで描いていた矩形を、ステージのサイズで描くように変更しました。変更したら上書き保存して構いません。せっかくなので、JSFLのファイル名も「ステージサイズのムービークリップ.jsfl」に変更してみましょう。[コマンド]メニューから実行して、ステージと同じサイズのムービークリップが作成されれば成功です。これでも大したコマンドにはなっていませんが、ステージサイズのマスクを作りたいときなんかに使えるのでは!?

Flash JavaScript APIについてはFlashのヘルプに説明があります。また、AdobeサイトのFlash ドキュメンテーションでPDF形式のリファレンスをダウンロードできます([拡張]タブ内)。今回使用したのは、Documentオブジェクトのwidthとheightプロパティです。次回は1からJSFLを記述していきましょう。