【问题标题】:AS3 Problem in loading external SWF into LoaderAS3 将外部 SWF 加载到 Loader 时出现问题
【发布时间】:2011-07-17 09:11:19
【问题描述】:

我有一个通过加载器组件加载外部 swf 的主应用程序。但是一些自己运行良好的 swf 不会加载到主应用程序中。当我尝试从主应用程序的 fla 加载其中一个 swf 时,它给出了正在寻找某些类的错误。通过这些类的名称,它看起来像是已加载的 swf 的一部分,但作为已编译且运行良好的 swf,为什么它在尝试由主应用程序加载时要查找此类?

我没有找到任何与此类问题相关的内容。任何帮助将不胜感激。

【问题讨论】:

  • 必须发布一些代码和相关错误才能获得任何结果。

标签: actionscript-3 flash external loader


【解决方案1】:

您似乎遇到了应用程序域冲突。如果您在每个 SWF 中的类名冲突(例如 swf1 有一个名为 Main 的类,swf2 也有一个名为 Main 的类),就会发生这种情况。

要解决此问题,请将 SWF 加载到新的应用程序域中:

loader.load(new URLRequest("g.swf"), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain)));

如果不是这样,您很可能在电影的第一帧中有一些代码在初始化 SWF 时执行(在获得 Event.COMPLETE 之前查看是否获得 Event.INIT)。

这可以通过从框架中删除代码来轻松解决。

【讨论】:

    【解决方案2】:

    只是为了检查我制作的 fla 文件只包含 Loader 组件和加载代码:

    var loader:Loader = new Loader();
    addChild(loader);
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingFunc);
    loader.load(new URLRequest("g.swf"));
    
    function loadingFunc(event:Event):void{
        var li:LoaderInfo = event.target as LoaderInfo;
        var mc:MovieClip = MovieClip(li.content)
    }
    

    此代码来自测试文件。 但即使这样,它仍然在寻找一些似乎是外部加载的 swf 之一的类。 错误是这样的:

    TypeError:错误 #1009:无法访问空对象引用的属性或方法。 在 src::Dedo() 在 src::Main()

    我的主应用程序中没有此类课程。所以它可能只是来自外部 swf 的类。

    【讨论】:

    • 这是您在引用(尚)不存在的属性时遇到的常见错误。必须进入子源并检查 Dedo() - 您的主应用程序可能没问题,但子 swf 中有一个明显的问题。
    • 感谢您的回复!问题是我没有所有 swf 的 fla 文件(也没有它们的类),并且有大量的 swf,所以不可能检查所有那些有问题的 swf 的类,它们自己玩得很好但不能加载到主应用程序中。有没有办法通过主应用程序本身解决这个问题?再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2018-05-07
    相关资源
    最近更新 更多