删除上一张图片

时间:2011-12-21 20:05:02

标签: actionscript-3

什么是更好的方法来删除旧图像或根本不存在的图像?

我正在使用这个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 个答案:

答案 0 :(得分:1)

您可以操纵数组的内容以跟踪当前和之前的幻灯片索引。数组中的第一个是您当前的幻灯片,最后一个是上一张幻灯片。与您建议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);
}