Actionscript 3 - 在我的 swf 中加载另一个 swf 时出现列表错误
Posted
技术标签:
【中文标题】Actionscript 3 - 在我的 swf 中加载另一个 swf 时出现列表错误【英文标题】:Actionscript 3 - List error when loading another a swf in my swf 【发布时间】:2014-06-11 20:43:13 【问题描述】:我正在开发一个 AS3/Flash 游戏,当我们在有人成功登录后将主页 swf 加载到我们的登录 swf 时遇到了问题。
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/drawBackground()
at fl.controls::LabelButton/draw()
at fl.controls::Button/draw()
at fl.core::UIComponent/drawNow()
at fl.controls::List/drawList()
at fl.controls::List/draw()
at fl.core::UIComponent/callLaterDispatcher()
我们正在 Flash Builder 中进行开发,将包含艺术作品和组件的 .swc 导入到我们的项目中。我们加载主页 swf 并将其添加为显示对象,如下所示:
private function LoadComplete(e:Event):void
//trace("LoadComplete");
m_loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, LoadProgress);
m_homePage = e.target.content as DisplayObject;
添加它:
addChild(m_homePage as DisplayObject);
有没有更好的方法将一个 swf 加载到另一个 swf 中?为什么通过登录 swf 加载主页 swf 时会报错,而单独调试主页时却不会?
任何建议都会很有帮助。
【问题讨论】:
尝试直接添加m_loader
本身:addChild(m_loader)
【参考方案1】:
如果你想在你自己的 swf 中执行外部 swf,你需要使用SWFLoader
<mx:SWFLoader
id="sfwLoader"
/>
并加载代码:
protected function loadSWF():void
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, onSWFLoaded);
loader.load(new URLRequest("app-storage:/myOther.swf")); // sample location
protected function onSWFLoaded(e:Event):void
var loader:URLLoader = URLLoader(e.target);
loader.removeEventListener(Event.COMPLETE, onSWFLoaded);
var context:LoaderContext = new LoaderContext();
context.allowLoadBytesCodeExecution = true;
context.applicationDomain = ApplicationDomain.currentDomain;
sfwLoader.loaderContext = context;
sfwLoader.addEventListener(Event.COMPLETE, loadComplete);
sfwLoader.load(loader.data);
protected function loadComplete(completeEvent:Event):void
var swfApplication:* = completeEvent.target.content;
这会影响任何 swf,因此存在潜在的安全漏洞。关于提供安全性的问题您可以检查:http://mabulous.com/air-applications-that-can-be-updated-without-requiring-admin-rights
【讨论】:
以上是关于Actionscript 3 - 在我的 swf 中加载另一个 swf 时出现列表错误的主要内容,如果未能解决你的问题,请参考以下文章
将 ActionScript 2 SWF 转换为 ActionScript 3 SWF 文件(可以剥离代码)
Actionscript 3 从另一个/根 SWF 调用函数
如何使用 actionscript 在 flash builder 中将背景放在我的 swf 后面?