
Adobe
カスタムパネルは、Fireworksを拡張して新機能をツールに導入したり、ワークフローをチームの手順に導入できる機能の1つです。Flash CS3 Professionalでカスタムパネルを作成または修正して、Fireworks CS3で使用するためのSWFファイルとしてエクスポートします。ActionScript 2.0またはActionScript 3.0を使用してこれらのパネルを拡張しFireworksイベントを処理することができます。
この記事では、ActionScript 3.0を使用したカスタムパネルでのFireworksイベントの処理について重点的に説明します。
この記事を効率良くフォローするには、次のソフトウェアやファイルが必要です。
fw_events_as3.zip (ZIP:690K)
ActionScript 3.0、Fireworks DOM、またFireworksでのJavaScriptを使用した作業についての基礎知識を持っていることが推奨されます。ActionScript 2.0を使用したカスタムパネルの作成方法についてさらに詳しくは、Trevor McCauleyによる次の記事を参照してください。
Fireworksでイベントが生成されると、FireworksはActionScript 3.0 SWFファイルのIsFwCallbackInstalled関数を呼び出し、イベント処理コードがカスタムパネルで記述されたものであるかどうか確認します。関数がtrueを返すと、Fireworksはまずカスタムパネルで記述されたイベントコードを実行してから、Fireworksのイベント処理コードを実行します。図1はFireworksイベントの制御フローを示しています。

図1. Fireworksイベントの制御フロー
Trevorの「Creating Fireworks panels」のパート2シリーズでは、Fireworksによって生成されたすべてのイベント*を含むテーブルを示しています。Fireworks CS3で発生したこれらのイベントをActionScript 3.0で利用するには、カスタムパネルに次の2つの関数を記述する必要があります。
IsFwCallbackInstalled: この関数はFireworksによって呼び出され、生成されたイベントに対してイベントハンドラが記述されたかどうかチェックします。
次の例では、開いているまたは閉じているFireworksドキュメントに関連したイベントがないかFireworksがチェックするときにtrueを返します。これにより、アクションが発生したときにカスタムパネルのイベントに対してハンドラを呼び出すようにFireworksに指示します。
function IsFwCallbackInstalled( funcName:String ):Boolean
{
switch( funcName )
{
case "onFwDocumentOpen":
return true;
case "onFwDocumentClose":
return true;
case "setfwActiveToolForSWFs":
return true;
}
return false;
}
イベント関数: イベントを処理するためのコードです。これは、Fireworksでイベントが発生したときにイベントに関連するコマンドを実行するために定義する関数です。次の例では、onFwDocumentOpenおよびOnFwDocumentCloseのイベントに対するイベントハンドラを示しています。ドキュメントを開いたとき(図2を参照)または閉じたとき(図3を参照)は常に警告メッセージが表示されます。
function OpenDoc()
{
MMExecute('alert("Opening Document");');
}

図2. ドキュメントを開いたときの警告メッセージ
function CloseDoc ()
{
MMExecute('alert("Closing Document");');
}

図3. ドキュメントを閉じたときの警告メッセージ
Fireworksが呼び出す、ActionScript 3.0で記述されたすべての関数を登録する必要があります。Fireworksでは、登録されていない関数をカスタムパネルで呼び出すことはできません。関数を登録するには、次のコード行を関数に追加します。
ExternalInterface.addCallback("<alias name>",<function name>);
ここで、
例えば、IsFwCallbackInstalledを登録するには、次のコード行を追加する必要があります。
ExternalInterface.addCallback("IsFwCallbackInstalled",IsFwCallbackInstalled);
同様に、OpenDocおよびCloseDocを登録するには、次のコード行をそれぞれ追加する必要があります。
ExternalInterface.addCallback("onFwDocumentOpen",OpenDoc);
ExternalInterface.addCallback("onFwDocumentClose",CloseDoc);
イベントを処理するActionScript 3.0の関数は、その関数とIsFwCallbackInstalledが登録された場合、またイベントが生成されたときにIsFwCallbackInstalledがtrueを返した場合にのみFireworksで実行されます。
この記事に付属のサンプルファイル(fw_events_as3.zip)には次の2つのファイルが含まれます。
ActionScript.swf: このファイルを次のFireworksのインストールフォルダにコピーします。
Windows: C:\Program Files\Adobe\Adobe Fireworks CS3\Configuration\Command Panels
Macintosh: Hard Drive:Applications:Adobe Fireworks CS3:Configuration:Command Panels
これでFireworksを再起動したときに新しいパネルが追加されます。ウィンドウ/ActionScriptを選択してこの新しいパネルを開きます(図4を参照)。このパネルでは、現在使用中のツールを一覧表示し、ドキュメントを開いたときまたは閉じたときに常に警告メッセージを表示します。

図4. 現在使用中のツールを示すActionScriptパネル

この記事は、Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported Licenseのもと提供しています。
Mayur MundadaはAdobe SystemsのFireworksチームで働いています。仕事を離れたときは、友人や家族と時を過ごすことを大切にしています。