2011-07-12 6 views
1

フレーム5のメインタイムラインにMovieClipがあります。これは「slideShow_mc」と呼ばれています。私はまた、次のコードMoveChip内のaddChild問題

function startSlideshow():void { 
    slideShow_mc.loadSlides(loadXml.xmlArray); 
} 

インサイドslideShow_mcは、私は、カスタムクラスを呼び出しています

function loadSlides(xml_file:Array):void 
{ 
    var slides:SlideShow = new SlideShow(xml_file); 
    addChild(slides); 
    slides.x = 0; 
    slides.y = 0; 
} 

私はスライドショークラスで他のslideShow_mcが消えたフレームが、トレースステートメントに行けば、それはまだそこだと私に教えて。どうすれば削除できますか? trace(slideShow_mc.numChildren)は0を返します。loadSlidesメソッド内のtrace(numChildren)も0を返します。

+1

タイムラインを使用する必要がありますか? AS +タイムラインミックスは常にPITAです。 – pkyeck

+0

私はフラッシュとプログラミングの初心者だから、一般的に+タイムラインの組み合わせを – Dexter

答えて

0

他のフレームに移動するだけでは、ステージからスライダーを取り外すことができます。イベントを受け取っている内部リスナーが含まれている場合は、それらをシャットダウンする必要があります。 slideShow_mc内でremovedFromStageイベントをリッスンしてから、スライダでdestroy関数を呼び出してみることもできます。

//inside slideShow_mc: 
//define slides in a wider scope so we can kill it later: 
var slides:SlideShow; 
//listen for this container being removed 
this.addEventListener(Event.REMOVED_FROM_STAGE,onRemoved); 
//load slide function 
function loadSlides(xml_file:Array):void 
{ 
    slides = new SlideShow(xml_file); 
    addChild(slides); 
    slides.x = 0; 
    slides.y = 0; 
} 
//remove handler 
function onRemoved(evt:Event):void 
{ 
    this.addEventListener(Event.REMOVED_FROM_STAGE,onRemoved); 
    if(slides != null) { 
     //call a function in the SlideShow class to kill its internal workings 
     slides.destroy(); 
     //free up the object for gc 
     slides = null; 
    } 
} 

明らかにslides.destroy()は私の一部に推測されます。あなたのクラスに、その動作をシャットダウンする関数があるかもしれません。あるいは、クラスを作成しなければならないかもしれませんし、destroyという名前ではありません。

+0

いいえ、私は今それを取得します。ありがとう! – Dexter

関連する問題