javascript - as3 ExternalInterface.addCallback 无法正常工作

标签 javascript actionscript-3 externalinterface addcallback

我试图从 javascript 访问 swf,所以 livedocs 中的这个示例是我要修改的。 http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html#includeExamplesSummary

但是,由于某些原因,它无法正常工作。我遇到的问题 是它在 Safari 和 Firefox 中不起作用,它只有在我发出警报时才起作用 在 javascript 将值传递给 swf 之前的函数中。 (好像还需要时间) 我也尝试在 as3 中设置一个计时器,但计时器不起作用,只有 js 中的警报有帮助。

我只想用js告诉swf文件播放ep1.swf。 这是我的 js 代码:

document.observe('dom:loaded', function() {
    $('episode1').observe('click', function() {
        var params = {wmode : "transparent", allowScriptAccess:"always", movie:"header"};
        swfobject.embedSWF("swf/float.swf", "header", "100%", "100%", "9.0.0","expressInstall.swf", "", params, "");
        sendToActionScript("ep1.swf");
    });
})
function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName];
    } else {
        //alert("aaa")
        return document[movieName];
    }
}
function sendToActionScript(value) {     
    thisMovie('header').sendToActionScript(value);       
}

这是我的 as3 代码:

private function receivedFromJavaScript(value:String):void {

    loader.load(new URLRequest(value));

}

我已经尝试了很长时间,有人知道如何解决这个问题吗?谢谢。

最佳答案

问题是当您尝试调用 SWF 文件时,它尚未完全加载。 Flash 播放器可能已加载,但加载和初始化 swf 文件需要一段时间。

您需要做的是在加载 SWF 文件时调用 javascript 函数并将您的 javascript 放在那里,而不是像您现在正在做的那样放在页面加载处理程序中。这样您就知道您的 Flash 应用程序已正确初始化。您正在使用的 ExternalInterface 类具有让您回调 javascript 的方法。

关于javascript - as3 ExternalInterface.addCallback 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/302829/

相关文章:

javascript - R shiny 中的绝对面板隐藏在传单输出后面

JavaScript 正则表达式搜索

javascript - 如何在 Vanilla JavaScript (JS) 中导入/导出类

javascript - Firefox 的 Flash 外部接口(interface)问题

actionscript-3 - Flex 4.0/4.5全局错误处理

javascript - 如何在 Flash 的 ExternalInterface 和 JavaScript 之间传递信息?

javascript - 如何解析远程服务器返回的JSONP数据

iphone - 使用 ActionScript 3 的触摸事件与鼠标单击事件

javascript - jQuery swfobject AS3 ExternalInterface 不工作