2011-12-21 11 views
0

古い画像やそこにない画像を削除するにはどうすればいいですか?前の画像を削除する

私はこのXMLスライドショーに取り組んでいます。最初に読み込まれた画像が消えない限り、私はそれを好みの方法で調整しました。この声明をより良くするにはどうすればいいですか?私もif (previous || imgHolder.numChildren > 0)を試してみてうまくいかなかった。どんな助け?

package 
{ 
    import flash.display.MovieClip; 

    import com.greensock.*; 
    import com.greensock.loading.*; 
    import com.greensock.events.LoaderEvent; 
    import com.greensock.loading.display.*; 


    public class Main extends MovieClip 
    { 

     var xml:XMLLoader; 
     var images:Array; 
     var current:int = 0; 
     var previous:Number; 


     public function Main() 
     { 
      init(); 
     } 

     private function init() 
     { 
      LoaderMax.activate([ImageLoader]); 
      xml = new XMLLoader("xml/gallery.xml",{name:"loader",onComplete:onXmlLoaded}); 
      xml.load(); 
     } 

     function onXmlLoaded(e:LoaderEvent) 
     { 
      images = LoaderMax.getContent("loader"); 
      nextImage(); //nextImage can use image var 

     } 

     private function nextImage() 
     { 
      TweenLite.from(images[current],1,{alpha:0, onStart:currentImage, onComplete: updateImage}); 
     } 

     private function currentImage():void 
     { 
      imgHolder.addChild(images[current]); 
     } 

     private function updateImage() 
     { 
      if (previous) 
      { 
       imgHolder.removeChild(images[previous]); 
      } 
      previous = current; 

      if (current < images.length - 1) 
      { 
       current++; 
      } else 
      { 
       current = 0; 
      } 

      TweenLite.delayedCall(2, nextImage); 
     } 
    } 
} 

答えて

1

現在のスライドインデックスと以前のスライドインデックスを追跡するために、配列の内容を操作できます。最初の配列は現在のスライド、最後は前のスライドです。あなたがimgHoldernumChildrenチェックを提案したのと同様に、削除するものがあるかどうかを確認する良い方法です。

private function nextImage() : void 
{ 
    TweenLite.from(images[0], 1 , {alpha:0, onStart:currentImage, onComplete:updateImage}); 
} 

private function currentImage():void 
{ 
    imgHolder.addChild(images[0]); 
} 

private function updateImage() : void 
{ 

    if(imgHolder.numChildren > 1) 
    { 
     imgHolder.removeChild(images[images.length-1]); 
    } 

    images.push(images.shift()); 

    TweenLite.delayedCall(2, nextImage); 
} 
+0

実際にうまくいきました。あなたがこの修正にどうやって来たのか本当にわかりません。私はまだノーベルであり、決してシフト方法を使用していません。私はこれから次のボタンと前のボタンを操作する方法を見つけなければなりません。再度、感謝します。 – Nerdysyntax

+0

私はそれがあなたが必要としていたアップデートシーケンスだと思った。助けが必要な場合は、別の質問を投稿してください。誰かが間違いなくあなたを助けます。 –

+0

さて、更新はありがたくでした。私はあなたのために質問があります。私の悪い数学で私を訂正してください。しかし、もし私が8つのイメージを持っていたら、images.length - 1は7になります。なぜこれが最初のイメージを取り除くのですか?それは動作しますが、あなたが説明できるかどうかを知りたいですか? – Nerdysyntax

関連する問題