サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

fscommand()

ID: FN0110007 Product: Flash

Platform: All
Version: MX and above

シンタックス
fscommand(コマンド, 引数);

引数
コマンド    ホストアプリケーションに渡して使用するストリング、またはFlash Playerに渡すコマンド。

引数    ホストアプリケーションに渡して使用するストリング、またはFlash Playerに渡す値。

説明
関数; SWFファイルと、Flash PlayerあるいはFlah PlayerをサポートするWebブラウザなどのプログラムとの間の通信を可能にします。また、fscommand()関数は、メッセージをMacromedia DirectorやVisual Basic、Visual C++、その他ActiveXコントロールをホストするプログラムに渡すために使用することもできます。

使用例1: メッセージをFlash Playerに送るためには、所定のコマンドと引数を使用する必要があります。以下の表は、コマンドおよび引数として指定できるfscommand()関数のパラメータ値を示しています。これらにより、Flash Playerで再生するSWFファイルを、プロジェクタも含めて制御することができます。

[訳者注] 以下の表は、スタンドアロンFlash Playerで使用するコマンドです。主として、プロジェクタに用いることになります。

コマンド 引数 目的
quit なし プロジェクタを終了します。
fullscreen trueまたはfalse trueを指定すると、Flash Playerはフルスクリーンモードに設定されます。falseを指定すると、プレーヤーは通常のメニュー表示になります。
allowscale trueまたはfalse falseを指定すると、SWFファイルはつねにオリジナルのサイズで描画され、拡大・縮小しないように、Playerが設定されます。trueを指定すると、SWFファイルはPlayer(訳者注: のウィンドウサイズ)の100%になるように、スケールが調整されます。
showmenu trueまたはfalse trueを指定すると、コンテクストメニューの項目すべてが有効になります。falseを指定すると、[Macromedia Flash Playerについて](訳者注: と[設定])を除くすべてのコンテクストメニューの項目が使用できなく(グレー表示に)なります。
exec アプリケーションへのパス プロジェクタからアプリケーションを実行します。
trapallkeys trueまたはfalse trueを指定すると、ショートカットキーも含めたすべてのキーイベントを、Flash Player上でonClipEvent(keyDown/keyUp)ハンドラ([訳者注]: やKeyクラスのイベントリスナー)に送ります[*1]。

"exec"コマンドに使える文字は、"A"-"Z"、"a"-"z"、"0"-"9"、"."(ピリオド)および"_"(アンダースコア)だけです。"exec"コマンドは、"fscommand"というサブディレクトリ内でのみ動作します。つまり、fscommandの"exec"コマンドを使ってアプリケーションを呼出すには、そのアプリケーションは"fscommand"という名前のサブディレクトリ内に存在しなければなりません[*2]。

使用例2: fscommand()関数を使って、WebブラウザのJavaScriptなどのスクリプト言語にメッセージを送るには、コマンド引数のパラメータとして任意の2つの引数を渡すことができます。これらの引数はストリングまたは式で、fscommand()関数を処理し、あるいは受取るJavaScriptの関数で使用されます。

Webブラウザでは、fscommand()関数は、SWFファイルが配置されたHTMLページ内のJavaScriptの関数moviename_DoFScommandを呼出します。movienameの部分は、Flash Playerに設定された名前で、EMBEDタグのNAME属性またはOBJECTタグのIDプロパティで指定します。Flash PlayerにmyDocumentという名前を設定すると、呼出されるJavaScriptの関数はmyDocument_DoFScommandになります[*3]。

使用例3: fscommand()関数は、Macromedia Directorにメッセージを送ることができます。メッセージはLingo(Directorのスクリプティング言語)により、ストリングやイベント、Lingoの実行コードとして処理されます。メッセージがストリングかイベントの場合、fscommand()関数からメッセージを受取るLingoスクリプトを記述する必要があります。そのスクリプトにより、Directorでアクションを実行します。詳しくは、Directorサポートセンターをご参照ください[*4]。

使用例4: Visual BasicやVisual C++、その他ActiveXコントロールをサポートするプログラムでは、fscommand()関数はVBイベントと2つのストリングを送り、その環境のプログラミング言語内で処理させることができます。詳しくは、「Flash method」をキーワードとしてFlash Supprot Centerを検索してください。

[訳者注*1] "trapallkeys"をtrueに設定すると、ESCキーやcommand/Ctrl+WなどのショートカットキーがスタンドアロンPlayerにキーイベントとして送られ、ショートカットとしては受取られません。ですから、そのショートカットキーに対して、スクリプトでの独自の動作を設定したいときに使うことができます。

なお、Mac OS Xでは、アプリケーションメニュー(図001)のショートカットキーは、キーイベントとして受取ることができません。たとえば、command+Qのキーは、"trapallkeys"をtrueに設定しても、Flash Playerを終了させます。

図001■Mac OS Xのアプリケーションメニュー

[訳者注*2] これはFlash MXから、セキュリティ上の考慮により加えられた制限です。

実行するアプリケーションにはファイル名のみを指定し、サブディレクトリ名"fscommand"はパスとして含めません。たとえば、プロジェクタと同階層の"fscommand"サブディレクトリ内にあるアプリケーションsomeApplication.exeを起動するには、つぎのようにfscommand()関数を記述します(スクリプト001。Macromedia TechNote「Using FSCommand in Macromedia Flash projectors」参照)。

スクリプト001■プロジェクタと同階層の"fscommand"フォルダ内にあるsomeApplication.exeを実行

fscommand ("exec", "someApplication.exe");

このセキュリティ上の制限は、アプリケーションに対するパスの指定そのものを許さないようです。したがって、"fscommand"フォルダ内にサブフォルダを作成して、その中の実行ファイルを指定することはできません(Macromedia Flash MX 2004 LiveDocsのfscommand()の項に加えられた、MacromediaのFrancis Cheng氏による2005年1月16日9:53PMのコメントを参照)。

Flash 5で作成するプロジェクタでは、"fscommand"フォルダを設定する必要はありません。また、プロジェクタからの相対パスで、アプリケーションのファイルを指定することができます。詳しくは、Macromedia TechNote「Using FSCommand in Macromedia Flash projectors」をご参照ください。なお、Windowsでは、パスの指定にショートファイルネームを使う必要があります。Collim Moock『ActionScript: The Definitive Guide』O'REILLY p.462には、絶対パスの指定に、パス区切り文字として"\"ではなく"/"を使うとされてます。しかし、筆者の検証では、パス区切り文字は"\"でも問題はありませんでした。また、"/"をパス区切り文字に使っても、やはりロングネームでは動作しないようです。

[訳者注*3] ブラウザとのJavaScriptを介したコミュニケーションについては、対応するブラウザの幅や、関数名・引数の数などの制約を考えると、MovieClip.getURL()メソッドまたはgetURL()関数を使う方が有利と思われます。Macromediaでも、fscommand()の機能は、最近はスタンドアロンを重点に強化が行われているということです。

    [Flashcoders] Ajax? / by John Dowdell :
    Note that later the "fscommand" commands were overloaded for filling different functions in standalones ...[中略]... Many browsers also hear messages from plugins in the "getURL('javascript:yadda-yadda')" format ...[中略]... The latter path seems to work pretty well nowadays, but has historically had browser gaps as well.

なお、fscommand()関数とgetURL()の比較については、Macromedia TechNote「Flash でポップアップブラウザウィンドウを作成する方法」をご参照ください。

[訳者注*4] DirectorからFlashにメッセージを送るには、MovieClip.getURL()メソッドまたはgetURL()関数を用いる方が処理の自由度は高いでしょう。詳しくは、Macromedia TechNote「FlashからDirectorにメッセージを送る」および「Flashでのボタンコントローラの作成」をご参照ください。

さらに、Director MXからは、FlashのSWFに対してコールバック関数を設定して、相互のコミュニケーションを実現することも可能になりました。詳しくは、「setCallback()」をお読みください。

Player
Flash Player 3以降。


以下のサンプルでは、fscommand()関数は([訳者註]: スタンドアロン)Flash Playerに対して、fullscreen_btnボタンをクリックした(放した)ときSWFがモニタのフルスクリーンになるようにサイズを設定し、unfullscreen_btnをクリックした(放した)ときその設定を解除します([訳者注]: 原文には、unfullscreen_btnの動作についての説明が漏れています)。

this.fullscreen_btn.onRelease = function() {
   fscommand("fullscreen", true);
};

this.unfullscreen_btn.onRelease = function() {
   fscommand("fullscreen", false);
};

以下のサンプルは、Flashのボタンに設定したfscommand()関数を使って、JavaScriptのメッセージボックスをHTMLページで開きます。メッセージ自体は、JavaScriptにfscommandの引数として送ります。

SWFファイルを挿入したHTMLページには、関数を追加する必要があります。この関数myDocument_DoFSCommandは、HTMLページに設定され、Flashのfscommand()を待ちます。fscommandがFlashで実行されると(たとえば、ユーザーがボタンを押したとき)、コマンドと引数のストリングがmyMovie_DoFSCommand関数に渡されます。渡されたストリングは、JavaScriptまたはVBScriptのコードでどのように使用しても結構です。このサンプルでは、関数にif条件のステートメントが存在し、commandのストリングが"messagebox"かどうかをチェックしています。もしそうであれば、JavaScriptのalertボックス(あるいは「メッセージボックス」)が開き、引数のストリングの内容を表示します。

function myDocument_DoFSCommand(command, args) {
   if (command == "messagebox") {
     alert(args);
   }
}

Flashムービーには、ボタンに以下のfscommand()関数を加えます。

fscommand ("messagebox", "This is a message box called from within Flash.");

fscommand()関数とパラメータには、式を用いることもできます。以下がそのサンプルです。

fscommand("messagebox", "Hello, " + name + ", welcome to our website!");

ムービーを確認するには、[ファイル] > [パブリッシュプレビュー] > [HTML]を選択します。

[注記]:
SWFをパブリッシュするとき、[パブリッシュ設定]ダイアログの[HTML]で[テンプレート]に[Flash(FSCommandサポート)]を使うと、myDocument_DoFSCommand関数が自動的に挿入されます。SWFファイルのNAMEおよびID属性は、ファイル名になります。たとえば、ファイルmyDocument.flaには、myDocumentという属性が設定されます。

出典
Flash MX 2004 ActionScript Language Reference: fscommand()より邦訳。

_____

作成者: 野中文雄
更新日: 2005年7月15日 [訳者注*3]にFlashcodersの投稿を引用
更新日: 2005年6月26日 [訳者注*3]を追加
更新日: 2005年6月24日 Flash MX 2004のドキュメントに合わせて全体の字句を修正。レイアウトの変更および注釈の追加・補正
更新日: 2003年1月24日 スタンドアロンFlash Playerのコマンドについて、訳者註の文章を若干整理
更新日: 2002年12月31日 "save"コマンドについての訳者註を削除し、"exec"コマンドに関する訳者註を追加。MXのドキュメントに合わせて、字句を若干修正。
更新日: 2002年1月8日 "trapallkeys"コマンドについて、訳者註を追加
更新日: 2001年11月6日 "exec"コマンドのパスについて、訳者註を追加
作成日: 2001年10月15日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.