当前位置:  开发笔记 > 编程语言 > 正文

as3 ExternalInterface.addCallback无法正常工作

如何解决《as3ExternalInterface.addCallback无法正常工作》经验,为你挑选了1个好方法。

我试图从javascript访问swf,所以我在tryocs中的这个例子是我想要修改的.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));

}

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



1> jcoder..:

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

你需要做的是在加载时从SWF文件调用javascript函数并将你的javascript放在那里而不是你现在正在做的页面加载处理程序.这样你就知道你的flash应用程序已经正确初始化了.您正在使用的ExternalInterface类具有允许您回调到javascript的方法.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有