2011-12-21 117 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

你可以操縱數組的內容來跟蹤你的當前和以前的幻燈片索引。 Array中的第一個是您當前的幻燈片,最後一個是上一張幻燈片。像你建議numChildren檢查你的imgHolder是檢查是否有東西要刪除的好方法。

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

好吧,實際上工作正常。我害怕的是我不確定你是如何來到這個修復程序的。我仍然是一個noob,也從來沒有使用過移位方法。我將不得不找到一種方法來操縱next和prev按鈕。再次感謝。 – Nerdysyntax 2011-12-21 20:59:23

+0

我認爲這只是你需要的更新順序。如果您需要任何幫助,只需發佈​​另一個問題,並有人會明確幫助您。 – 2011-12-21 21:12:56

+0

是的更新是謝謝。不過,我確實有一個問題。糾正我對我的壞數學請,但如果我有8個圖像然後image.length - 1將是7.爲什麼這擺脫了第一個圖像?它的工作原理,但我想知道如何解釋? – Nerdysyntax 2011-12-21 21:16:34