请帮助我收到此错误,并且无法使用之前所有类似主题的帖子中描述的任何其他方法来解决。
实际上,我在这里将 swf myMap 加载到另一个 swf 上。swf 加载工作正常,但是当尝试从阶段删除它时,我得到上述错误...
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at actions.classes::MapInteractionManager/unloadSWF()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
这是我的as3代码...
var _swfLoader:Loader;
var _swfContent:MovieClip;
loadSWF("myMap.swf"); //loading the swf file here
function loadSWF(path:String):void {
var _req:URLRequest = new URLRequest();
_req.url = path;
_swfLoader = new Loader();
setupListeners(_swfLoader.contentLoaderInfo);
_swfLoader.load(_req);
}
function setupListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, addSWF);
dispatcher.addEventListener(ProgressEvent.PROGRESS, preloadSWF);
}
function preloadSWF(event:ProgressEvent):void {
var _perc:int = (event.bytesLoaded / event.bytesTotal) * 100;
// swfPreloader.percentTF.text = _perc + "%";
}
function addSWF(event:Event):void {
event.target.removeEventListener(Event.COMPLETE, addSWF);
event.target.removeEventListener(ProgressEvent.PROGRESS, preloadSWF);
_swfContent = event.target.content;
_swfContent.addEventListener("close", unloadSWF);
main.stage.addChild(_swfContent);
}
function unloadSWF(event:Event):void {
_swfLoader.unloadAndStop();
main.stage.removeChild(_swfContent); //getting error when trying to remove swf
_swfContent = null;
}
and close event is as,
_swfContent.dispatchEvent(new Event("close"));
请帮忙,我卡住了。
这里有一些更新,我将代码更新为,
function unloadSWF(event:Event):void
{
if(main.stage.contains(_swfContent))
main.stage.removeChild(_swfContent);
}
现在错误消失了,因为它没有进入 if 循环!!!???
但我仍然可以在舞台上看到 swf:( 请帮助
解决了...感谢大家的帮助...
ToddBFisher 确实解决了它:)
只需将 _swfLoader 添加到舞台,加载它,然后将关闭侦听器附加到它,而不是使用 _swfContent。去掉中间人,它起作用了......希望这有帮助......