2

私はアクションスクリプトで次の呼び出しを行っています

var data:Object = ExternalInterface.call("getData");
trace("data is", data);  // data is null in IE7-9, but works in FF

JavaScriptで次の関数に

function getData() {
    var data = {example : "data"};
    console.log("data", data); //displays as expected in the console
    return data;
}

次のコードで埋め込みに swfObject2 を使用します (以下に未定義の変数がいくつかありますが、既存のコードからこれをコピーして少しクリーンアップしました)。

var This                = this,
    divId               = "myDiv",
    widgetData          = serviceData.flashvars,
    swfURL              = "http://mysite.com/my.swf",
    flashvars           = widgetData,  //external object, not used in this case
    params              = {
        movie: serviceData.swfURL,
        pluginspage: "http://www.adobe.com/go/getflashplayer",
        align: "middle",
        allowScriptAccess: "always",
        quality: "high",
        allowFullScreen: "true",
        wmode: "transparent",
        bgcolor: "#FFFFFF",
        menu: "false"
    },
    expressInstallURL   = "http://mysite.com/expressInstall2.swf?2",
    attributes          = {id : divId + "_mySWF", name: divId + "_mySWF"},
    callback            = function (e) {
        console.log("player loaded");
    };
flashVideoPlayer = swfobject.embedSWF(swfURL, divId, widgetData.width, widgetData.height, "10", expressInstallURL, flashvars, params, attributes, callback);

そして、ids、allowscriptaccess、および I'm not inside form タグのように、すべての通常は html に含まれています。javascriptがgetData内のデータを表示しているため、関数が呼び出される前に存在する必要があるなど、私が知っている初期化の問題はありません。問題は、javascriptがオブジェクトをフラッシュに返すことにあるようです。

この投稿も役に立たなかったようですが、swfObject を使用しているため、私の場合は少し異なります。私は何か間違ったことをしていますか、それともこれはバグですか?

4

1 に答える 1

0

あなたが提供した AS3 コードの 1 行だけで十分かどうかはわかりませんが、そうであれば、次のことを試すことができます。

private function sendToJS(e:MouseEvent):void {  
    if(ExternalInterface.available) {  
        ExternalInterface.call("fromAS", doSomethingHere);  
    }  
}

自分が一度使ったもの。

于 2012-06-15T07:46:30.607 に答える