ちょっとハマったのでメモ。
読み込んだ外部swfを新しく作ったsprite()であるカレンダーにaddChildして表示した。
calender = new Sprite();
private function calendar_show():void {
cal_URL = new URLRequest("****.swf");
cal_loader= new Loader();
cal_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
cal_loader.load(cal_URL);
}
private function compHandler(e:Event):void {
calendar.addChild(cal_loader);
}
でこれがいらなくなったときにremoveする際
private function next_clkHandler(e:MouseEvent):void {
calendar.removeChild(cal_loader);
cal_loader.unload();
}
としたんですけど、子のイベントが消えていないためエラーが出ました。
原因はremoveEventListener();で子のイベントを消去していないから。
対処としては読み込んだswfに
addEventListener(Event.REMOVED_FROM_STAGE, removeHandler);
private function removeHandler(e:Event):void {
(このファイル内でaddEventListenerしたイベントをremoveEventListenerします)
}
これでOK。
この記事にトラックバックする