FireFox& flash扩展我有externalInterface的问题(

时间:2011-04-19 16:49:14

标签: flash firefox windows-7 externalinterface

我如何与我的Flash应用程序通信?我加载我的扩展程序闪存 有些人喜欢这个

myDiv.innerHTML = <object…><param allowScriptAsses… etc … 
flash load fine !!! now, i trace my externalInterface method 
var flashObject = document.get…("myFlash")
alert(flashObject) <- okey - [embedHtmlObject … 
alert(flashObject.myExternalMethod) <- native function its okey !!! 
try excute 
flashObject.myExternalMethod() and NOTHING !!! ((( externalMEthod not invoked !!! this problem ONLY on windows 7 in fireFox ! 
在mac os和firefox上我使用wrapedObject和externalInterface工作正常!但如果我尝试在Windows系统上使用wrapedObject - 我有错误((

我如何在firefox中的Windows上正确使用ExternalInterface?

1 个答案:

答案 0 :(得分:0)

首先,您需要为ActionScript代码添加回调:

flash.external.ExternalInterface.addCallback("myExternalMethod", doSomething);

function doSomething():void
{
//your code
}

如果您使用swfObject嵌入Flash影片,则可以使用 swfobject.getObjectById 来检测您的swf并调用您的方法。

swfobject.getObjectById("myFlash").myExternalMethod();

如果您不使用swfObject,只需复制并通过JS代码上的getObjectById方法:

function getObjectById(objectIdStr) {
        var r = null;
        var o = getElementById(objectIdStr);
        if (o && o.nodeName == "OBJECT") {
            if (typeof o.SetVariable != UNDEF) {
                r = o;
            }
            else {
                var n = o.getElementsByTagName(OBJECT)[0];
                if (n) {
                    r = n;
                }
            }
        }
        return r;
    }

通过这样做来打电话:

getObjectById("myFlash").myExternalMethod();

看看这个,我实际上在我的博客上编写了一个小例子: http://www.nelsond8.com/?p=515