小编Sel*_*ene的帖子

在ExternalInterface.addCallback中注册的函数在Javascript中不可用

我正在开发一款Flash游戏,需要在页面上调用一些Javascript并从中获取数据.从Flash调用Javascript工作.从Javascript(通常)调用Flash函数不会.

我正在使用Gaia框架.

怎么了:

  1. swf与SWFObject一起加载
  2. Flash文件中有一个按钮.单击时,它用于ExternalInterface.call()调用Javascript函数.这有效.
  3. Javascript函数调用公开的Flash函数ExternalInterface.addCallback().
  4. 有时,Javascript会产生以下错误:TypeError: myFlash.testCallback is not a function.
  5. 发生错误时,它会影响注册的所有功能addCallback().Gaia及其中包含的一些库使用addCallback(),从Javascript调用这些函数也会产生TypeError.
  6. 在Flash中按下按钮之前等待很长时间并不能解决错误.
  7. 让Flash addCallback()定期重试并不能解决错误
  8. 发生错误时,ExternalInterface.available = trueExternalInterface.objectID包含Flash嵌入对象的正确名称.
  9. 发生错误时,document.getElementById('myflashcontent')正确返回Flash嵌入对象.

编辑添加:

  • 此问题出现在Firefox 3.6中,但不出现在Chrome或IE8中.我没有尝试旧版浏览器.
  • 我正在运行Flash播放器的Debug版本.
  • 我的电话ExternalInterface.addCallback()被包裹在一个try...catch街区.发生JS错误时,不会触发该catch块.这是一场无声的失败.
  • 在webhost上进行测试时发生错误,swf从与其所在页面相同的服务器加载.
  • 我设置allowScriptAccess = always.
  • 设置flash.system.Security.allowDomain("mydomain")不能解决错误.

从我的Page类:

public class MyPage extends AbstractPage
{
    // declarations of stage instances and class variables …
Run Code Online (Sandbox Code Playgroud)

javascript flash swfobject actionscript-3 externalinterface

10
推荐指数
1
解决办法
1万
查看次数