删除以前的图像
问题描述:
最好的方式来删除旧图像或根本不存在的图像?删除以前的图像
我正在使用这个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);
}
}
}
答
你可以操纵数组的内容来跟踪你的当前和以前的幻灯片索引。 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);
}
好吧,实际上工作正常。我害怕的是我不确定你是如何来到这个修复程序的。我仍然是一个noob,也从来没有使用过移位方法。我将不得不找到一种方法来操纵next和prev按钮。再次感谢。 – Nerdysyntax 2011-12-21 20:59:23
我认为这只是你需要的更新顺序。如果您需要任何帮助,只需发布另一个问题,并有人会明确帮助您。 – 2011-12-21 21:12:56
是的更新是谢谢。不过,我确实有一个问题。纠正我对我的坏数学请,但如果我有8个图像然后image.length - 1将是7.为什么这摆脱了第一个图像?它的工作原理,但我想知道如何解释? – Nerdysyntax 2011-12-21 21:16:34