ドキュメントを誤解していると思います。callback
この例では、呼び出したものへのコールバックではなく、Flash 内の関数への単なる参照です。
基本的に、.call()
AS から JS 関数を呼び出すために使用します。.addCallback()
そして、名前に基づいてどの AS 関数を呼び出す必要があるかを Flash Player に伝えるために使用します。
あなたの例でtheFunction
は、匿名AS関数を参照する名前である「foo」として1つのパラメーターを取得します。なぜそのような関数を渡したいのかわかりませんが、必要な場合は、JavaScript から次のように呼び出すことができます。
function theFunction(callback) {
// .. do something...
swfObject[callback]();
}
JS/HTML 側を制御できない場合は、制御できるかどうかわかりません。とにかく、必要な理由がわからない-JS呼び出しは、同じスレッドで実行されているかのように同期的です。つまり、Flash PlayerはJSコードを実行してからFlash Playerに戻ります...あなたは持っていません実行または何かを待つ。
また、JS/HTML 側に触れずにページを制御する必要がある場合は、JS コード全体を挿入できることを覚えておいてください。単純な関数呼び出しである必要はありません。.call
関数全体を SWF 内から作成できます。例えば、
var js:XML = <script><![CDATA[
// Javascript code...
]]></script>;
ExternalInterface.call(js);
または、戻りデータが必要な場合は、コールバックも必要ありません。次のように単純な呼び出しを行うだけです。
// JS
function isNumberZero(__num) {
return __num == 0;
}
// AS
trace ("Is number zero = " + ExternalInterface.call("isNumberZero", 10));
これがまったく役立つかどうかはわかりません。そうでない場合は、正確に何をしようとしているのかについて、より多くの情報を入手することをお勧めします。