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