代码之家  ›  专栏  ›  技术社区  ›  Christophe Herreman

SWF不是可加载的模块

  •  2
  • Christophe Herreman  · 技术社区  · 17 年前

    我们正在创建一个应用程序,它使用动态加载到主swf中的模块。我们遇到的问题是,当我们在本地调试主应用程序时,无法加载位于测试服务器上的模块。我们得到的错误是“SWF不是可加载的模块”。

    我查了一下,发现服务器上需要一个跨域文件,该文件授予从外部位置加载模块的权限。因此,我们创建了一个简单的跨域文件并将其放在服务器上,但这似乎没有帮助。

    以下是跨域文件:

    <cross-domain-policy>
      <allow-access-from domain="*"/>
    </cross-domain-policy>
    

    我们通过ModuleLoader类和所有默认设置加载模块,没有自定义应用程序域等。当我们将主swf部署到服务器上时,我们能够毫无问题地加载模块。

    有什么线索吗?跨域文件是否缺少某些设置?

    :外部模块似乎已成功加载(我可以在HTTP嗅探器中验证),但在主应用程序中加载时未能初始化。错误仍然是“SWF不是可加载模块)

    5 回复  |  直到 17 年前
        1
  •  3
  •   Tom Schober Tom Schober    17 年前

    以下是Adobe JIRA提出的解决方案: http://bugs.adobe.com/jira/browse/SDK-15393

        2
  •  1
  •   Marcus Stade Quentin    17 年前

    还值得一提的是,您应该允许对本地swf应用程序所在的目录进行完全访问。使用Adobe设置管理器执行此操作: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

    作为补充说明,我认为设置管理器是flash生态系统中最糟糕的UI组件之一。事实上,他们需要在一篇文章中向经理澄清,事实上这不是一个截图,这才是真正的关键。

        3
  •  1
  •   nerdabilly    17 年前

    http://localhost/ . 如果这样做有效,我们就知道问题出在本地文件和远程文件之间。如果没有,那么问题就出在crossdomain.xml或代码中,这不太可能,但我们现在还不应该排除它。如果确定问题在于使用本地SWF,则在设置管理器中添加本地文件夹(参见macke的帖子)

        4
  •  1
  •   user163196 user163196    16 年前

    下面是一个基于Adobe推荐的捆绑式解决方案。

    http://aaronhardy.com/flex/loading-a-remote-module-into-a-local-app/

        5
  •  0
  •   Tony    17 年前

    看起来很像我的跨域

    <?xml version="1.0"?>
    <!DOCTYPE cross-domain-policy 
      SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
      <allow-access-from domain="*" />
    </cross-domain-policy>
    

    在本地服务器根目录上,对吗?

    你检查过你的目录权限了吗?