我如何与我的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?
答案 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