私がこのエラーを受け取り、同様のトピックを持つ以前のすべての投稿で説明されている他の方法では解決できなかったのを助けてください。
実際、ここで私はswfmyMapを別の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を見ることができます:( plz help
解決しました...助けてくれてありがとう...
ToddBFisherはそれを解決しました:)
_swfContentを使用する代わりに、_swfLoaderをステージに追加してロードし、それに近いリスナーをアタッチするだけです。真ん中の人を切り取って、それはうまくいきました....これが役立つことを願っています...