ExternalInterface.call() メソッドでは、コンテナアプリケーション内のコードが実行されます。パラメータは最低 1 つ必要で、コンテナアプリケーション内で呼び出される関数の名前を含んだストリングを指定します。ExternalInterface.call() メソッドに渡された追加のパラメータは、関数呼び出しのパラメータとしてコンテナに渡されます。
// calls the external function "addNumbers"
// passing two parameters, and assigning that function's result
// to the variable "result"
var param1:uint = 3;
var param2:uint = 7;
var result:uint = ExternalInterface.call("addNumbers", param1, param2);
コンテナが HTML ページの場合は、指定された名前の JavaScript 関数がこのメソッドで呼び出され、その名前はその格納された HTML ページの script エレメントで定義されている必要があります。JavaScript 関数の戻り値は ActionScript に返されます。
<script language="JavaScript">
// adds two numbers, and sends the result back to ActionScript
function addNumbers(num1, num2)
{
return (num1 + num2);
}
</script>
コンテナがそれ以外の ActiveX コンテナの場合は、このメソッドによって Flash Player ActiveX コントロールからその FlashCall イベントが送出されます。指定された関数名とパラメータは、Flash Player によって直列化されて XML ストリングになります。コンテナでは、イベントオブジェクトの request プロパティでその情報にアクセスでき、それを使用して自身のコードの実行方法を判定できます。値を ActionScript に返すには、コンテナコードで ActiveX オブジェクトの SetReturnValue() メソッドを呼び出し、その結果(直列化された XML ストリング)をメソッドのパラメータとして渡します。この通信で使用される XML フォーマットの詳細については、外部 API の XML フォーマットを参照してください。
コンテナが Web ブラウザでも、その他の ActiveX コンテナでも、呼び出しが失敗した場合やコンテナ側のメソッドが戻り値を返さなかった場合は、null が返されます。呼び出し側コードによるアクセスが、コンテナ環境の属するセキュリティ Sandbox によって許可されていない場合は、ExternalInterface.call() メソッドによって SecurityError 例外がスローされます。この問題を回避するには、コンテナ環境の allowScriptAccess に適切な値を設定します。例えば、HTML ページの allowScriptAccess の値を変更するには、object および embed タグの該当する属性を編集します。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート