flash.system パッケージには、SWF ファイルとそのコンテナ間の通信を行うパッケージレベルの関数
fscommand() が含まれます。| 関数 | 定義元 | ||
|---|---|---|---|
SWF ファイルが、Flash Player または Flash Player のホストプログラム(Web ブラウザーなど)と通信できるようになります。 | flash.system | ||
fscommand | () | 関数 |
public function fscommand(command:String, args:String = ""):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0, Flash Player 9 |
SWF ファイルが、Flash Player または Flash Player のホストプログラム(Web ブラウザーなど)と通信できるようになります。fscommand() 関数を使用して、Director、または ActiveX コントロールに対応している Visual Basic や Visual C++ などのプログラムにメッセージを渡すこともできます。
fscommand() 関数を使用すると、SWF ファイルが Web ページ内のスクリプトと通信できるようになります。ただし、スクリプトへのアクセスは、Web ページの allowScriptAccess 属性の設定により制御されます。この属性は、SWF ファイルが埋め込まれる HTML コード内で設定します。例えば、Internet Explorer の PARAM タグ内や、Netscape の EMBED タグ内で設定します。
-
allowScriptAccessが「sameDomain」(デフォルト)に設定されている場合は、Web ページと同じドメインに存在する SWF ファイルからのスクリプト実行のみが許可されます。 -
allowScriptAccessが「always」に設定されている場合、SWF ファイルと HTML ページのドメインが異なる場合でも、SWF ファイルは埋め込み先の HTML ページとやり取りできます。 allowScriptAccessが「never」に設定されていると、SWF ファイルはどの HTML ページともやり取りできません。この値の使用はお勧めしません。また、信頼されていない SWF ファイルを独自のドメインから提供していない限り、この値を使用する必要はありません。信頼されていない SWF ファイルを提供する必要がある場合は、区別するためのサブドメインを作成し、信頼されていないコンテンツはすべてそこに配置することをお勧めします。
SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメーター(object タグおよび embed タグのパラメーター)を設定します。
fscommand() 関数は、呼び出し元 SWF ファイルがローカルファイルシステムのサンドボックスまたはネットワーク接続したローカルのサンドボックスに置かれ、さらに、含まれている HTML ページが信頼されないページとしてサンドボックスに置かれている場合には、使用できません。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
シンタックス 1:fscommand() を使用して Flash Player にメッセージを送るには、定義済みのコマンドとパラメーターを使用します。次の表に、fscommand() 関数の command パラメーターと args パラメーターに指定できる値を示します。これらの値は、プロジェクターを含め、Flash Player で再生する SWF ファイルを制御します。プロジェクターは、Flash Player がなくてもスタンドアローンアプリケーションとして実行可能な形式で保存される SWF ファイルです。
| コマンド | パラメーター (args) | 用途 |
|---|---|---|
quit | なし | プロジェクターを終了します。 |
fullscreen | true または false | true を指定すると、Flash Player はフルスクリーンモードに設定されます。false を指定すると、プレーヤーはノーマルメニュービューになります。 |
allowscale | true または false | false を指定すると、SWF ファイルは常に元のサイズで表示され、拡大 / 縮小されないようにプレーヤーが設定されます。true を指定すると、SWF ファイルは強制的にプレーヤーのウィンドウサイズに対して 100% に拡大 / 縮小されます。 |
showmenu | true または false | true を指定すると、すべてのコンテキストメニューアイテムが有効になります。false を指定すると、[設定] および [Flash Player について] 以外のすべてのコンテキストメニュー項目が非表示になります。 |
exec | アプリケーションへのパス | プロジェクターの内部からアプリケーションを実行します。 |
trapallkeys | true または false | true を指定すると、アクセラレーターキーを含むすべてのキーイベントが Flash Player の onClipEvent(keyDown/keyUp) ハンドラーに送られます。 |
すべてのアプリケーションで、表に記載されているすべてのコマンドを利用できるわけではありません。
- Web プレーヤーでは、コマンドはいずれも利用できません。
- すべてのコマンドをスタンドアローンのプロジェクターアプリケーションで利用できます。
- AIR アプリケーションでは、同様の関数に対して、flash.desktop.NativeApplication クラス(
fscommand("quit")ではなくNativeApplication.nativeApplication.exit()など)を使用します。 - ムービープレビュープレーヤーでは、
allowscaleおよびexecのみを利用できます。
exec コマンドで使用できる文字は、A ~ Z、a ~ z、0 ~ 9、ピリオド(.)、アンダースコア(_)だけです。exec コマンドは、fscommand サブディレクトリでのみ実行されます。つまり、exec コマンドを使ってアプリケーションを呼び出す場合、アプリケーションは fscommand という名前のサブディレクトリ内に存在する必要があります。exec コマンドは、Flash プロジェクターファイル内だけから実行できます。
シンタックス 2:fscommand() を使用して、Web ブラウザーの JavaScript などのスクリプト言語にメッセージを送るには、パラメーター command と args 内に 2 つのパラメーターを渡します。これらのパラメーターはストリングと式のいずれでもよく、fscommand() 関数をキャッチする、つまり fscommand() 関数を処理する JavaScript 関数側で使用されます。
Web ブラウザーでは、fscommand() は、SWF ファイルを含む Web ページ内に存在する JavaScript 関数 moviename_DoFScommand を呼び出します。moviename には、EMBED タグの NAME 属性または OBJECT タグの ID プロパティに使用した Flash オブジェクトの名前を指定します。SWF ファイルに "myMovie" という名前を付けている場合、JavaScript 関数 myMovie_DoFScommand が呼び出されます。
前述のように、SWF ファイルを含む Web ページでは、allowScriptAccess 属性を設定することで、SWF ファイルによるその Web ページへのアクセスを許可または拒否します。この属性は、SWF ファイルが埋め込まれる HTML コード内で設定します。例えば、Internet Explorer の PARAM タグ内や、Netscape の EMBED タグ内で設定します。
ブラウザーで実行される Flash Player 10 以降では、このメソッドをプログラムで使用してポップアップウィンドウを開く方法は有効でない場合があります。ブラウザー(およびブラウザーの設定)によってはポップアップウィンドウがブロックされる場合があり、すべてのポップアップウィンドウが表示される保証はありません。ただし、ユーザー操作の直接の結果として実行されるコード(マウスのクリックやキー入力イベントのイベントハンドラーなど)に限っては、このクラスを使用してポップアップウィンドウを開く方法が有効です。
シンタックス 3:fscommand() 関数は、メッセージを Director (アドビ システムズ社の Macromedia Director) に送ることができます。これらのメッセージは、Lingo(Director のスクリプト言語)により、ストリング、イベント、実行可能 Lingo コードのいずれかと解釈されます。メッセージがストリングまたはイベントである場合、fscommand() 関数からメッセージを受信するための Lingo コードを書き、Director 内でアクションを実行する必要があります。詳細については、www.adobe.com/jp/support/director/ の Director サポートセンターを参照してください。
シンタックス 4:ActiveX コントロールに対応した VisualBasic や Visual C++ などのプログラムでは、fscommand() を使って、その環境のプログラミング言語で処理できる 2 つのストリングを含む VB イベントを送信できます。詳細については、www.adobe.com/jp/support/flash/ の Flash サポートセンターで "Flash メソッド" というキーワードを使用して検索してください。
注意:ExternalInterface クラスを使用すると、JavaScript と ActionScript(シンタックス 2)との間、または ActionScript と、VisualBasic や Visual C++ などの ActiveX コントロールに対応した他のプログラム(シンタックス 4)との間の通信機能が向上します。fscommand() は、メッセージを Flash Player に送信するため(シンタックス 1)および Director に送信するために(シンタックス 3)引き続き使用する必要があります。
パラメーター
command:String — ホストアプリケーションに任意の用途で渡されるストリング、または Flash Player に渡されるコマンドです。
| |
args:String (default = "") — ホストアプリケーションに任意の用途で渡されるストリング、または Flash Player に渡される値です。
|
例外
Error — マウスイベントやキー入力イベントなどのユーザー操作に応じて関数が呼び出されない場合。
|
関連する API エレメント
例 ( この例の使用方法 )
fscommand() を使用して Flash Player をフルスクリーンモードにし、拡大 / 縮小を許可しないようにする方法を示します。オレンジのボックスが draw() を使用してステージに追加されます。draw() では、click イベントリスナーに名前付き clickHandler() が追加されます。これは click イベントに応答して fscommand() の別の呼び出しを使用して Flash Player に終了を指示します。
メモ : この例は、Web ブラウザーではなく、スタンドアローン Flash Player で実行する必要があります。
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.system.fscommand;
import flash.events.MouseEvent;
public class FSCommandExample extends Sprite {
private var bgColor:uint = 0xFFCC00;
private var size:uint = 100;
public function FSCommandExample() {
fscommand("fullscreen", "true");
fscommand("allowscale", "false");
draw();
}
private function clickHandler(event:MouseEvent):void {
fscommand("quit");
trace("clickHandler");
}
private function draw():void {
var child:Sprite = new Sprite();
child.graphics.beginFill(bgColor);
child.graphics.drawRect(0, 0, size, size);
child.graphics.endFill();
child.buttonMode = true;
addEventListener(MouseEvent.CLICK, clickHandler);
var label:TextField = new TextField();
label.text = "quit";
label.selectable = false;
label.mouseEnabled = false;
child.addChild(label);
addChild(child);
}
}
}
Tue Jun 12 2018, 10:51 AM Z