【问题标题】:addChild() issue: error 2007 on AS3addChild() 问题:AS3 上的错误 2007
【发布时间】:2015-12-30 17:03:42
【问题描述】:

我有这段代码假设在我的主文件 (skeleton.fla) 中添加一个 swf 文件 (homePage.swf)。

代码:

var mcHome:MovieClip;

var newPage:Loader = new Loader();
newPage.load(new URLRequest("homePage.swf"));

newPage.contentLoaderInfo.addEventListener(Event.COMPLETE, homeLoaded);      

function homeLoaded(event:Event):void {

    mcHome = MovieClip(newPage.contentLoaderInfo.content);
    newPage.contentLoaderInfo.removeEventListener(Event.COMPLETE, homeLoaded);
    addChild(mcHome);  

}

我不断收到此错误:

TypeError:错误 #2007:参数 child 必须为非 null。在 flash.display::DisplayObjectContainer/addChild() 在 skeleton_fla::MainTimeline/homeLoaded()

我不知道如何解决它,或者改变什么!

请帮忙,我有点绝望。

【问题讨论】:

  • 确保“homePage.swf”和你的skeleton.fla在同一个目录,并检查swf文件名的拼写
  • 是的。而且名字也一样。
  • 试试addChild(newPage);。例如添加加载程序而不是加载程序的内容。如果 swf 不存在,您将无法获得完整的事件。很可能是安全沙盒问题。
  • 现在我遇到了这个错误:TypeError:错误 #1009:无法访问空对象引用的属性或方法。在skeleton_fla::MainTimeline/homeLoaded()
  • 你的 homeLoaded 函数现在是什么样子的?如果你不做任何其他事情,你可以只使用三行代码:var newPage:Loader..... - newPage.load(new URLRequest.....); - addChild(newPage); - 然后忘记home加载的函数,一起完成监听器。

标签: actionscript-3 flash


【解决方案1】:

最好将Loader 对象而不是contentLoaderInfo.content 添加到displayListLoader 本身就是 DisplayObject。无需访问Loader 对象内部的MovieClip,尽管在大多数环境中都可以。

如果您尝试加载驻留在其他域中的SWF,您可以将Loader 对象添加到displayList,但如果您不创建@987654332,则无法访问内容属性@文件。

var newPage:Loader = new Loader();
newPage.load(new URLRequest("homePage.swf"));

newPage.contentLoaderInfo.addEventListener(Event.COMPLETE, homeLoaded);      

function homeLoaded(event:Event):void {

    newPage.contentLoaderInfo.removeEventListener(Event.COMPLETE, homeLoaded);

    addChild(newPage);  

}

Here你有一个例子。

【讨论】:

  • 考虑通过解释为什么需要添加加载程序而不是内容来使您的答案更有用。
  • 好的@BadFeelingAboutThis,我会努力训练我的糟糕英语;)
  • 这实际上不是真的,甚至不是一个有效的答案,尽管它已经被标记为接受。没有正当理由说明为什么添加加载器比加载的内容更好。
  • 嗨@BotMaster。首先对我糟糕的英语感到抱歉。我没有原始的SWF 文件来了解它发生的原因。但是我给你一个例子,如果你加载一个SWF,它有一个扩展Sprite类的主类,当你尝试将Sprite转换为MovieClip时,代码会失败。使用Loader 本身对我来说更好,更容易避免并发症(这只是我的观点,也许你不喜欢以这种方式做事)。再次抱歉我的英语不好。
  • @BotMaster 我修改了我的答案,并添加了与加载存储在不同域中的SWF 的沙盒安全违规相关的另一个方面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多