水平图像滚动条setChildIndex仅影响每个其他嵌套的动画片段

时间:2014-09-20 16:12:37

标签: actionscript-3 flash

此图像滚动条由容器mc组成,容器mc容纳7个动画片段,每个影片剪辑都有图像和边框。每个箭头键按下(从另一个类),边框从alpha 0到1。滚动器本身一直有效,直到我尝试set'numChildren -1的'next'的setChildIndex。然后它会影响所有其他mc并将其全部搞砸。有没有更好的方法来实现这个向前向后滚动?谢谢你的建议。我想要实现的是让每个'持有者'成为容器内的最高深度。

package 
{
import com.greensock.TweenMax;  
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;    

public class ImageBank extends MovieClip
{
    private var loader:Loader;
    private var req:URLRequest;
    private var container:Sprite;
    private var border:Border;
    private var holder:Sprite;
    private var numImages;
    private var currentImage:uint = 0;
    private var prevImage:uint;
    private var borderNext:*;
    private var borderLast:*;       

    public function ImageBank(path:String, numImages:uint)
    {
        this.numImages = numImages          
        container = new Sprite()
        addChild(container);            

        for (var i:uint = 0; i < numImages; i++) {
        border = new Border();
        border.alpha = 0;
        holder = new Sprite()
        holder.x = i * 165;
        loader = new Loader()
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);                
        req = new URLRequest(path + 'poster_' + i + '.png');
        loader.load(req);
        loader.x += 4;
        loader.y += 3;
        loader.alpha = .8;
        holder.addChild(border);
        holder.addChild(loader);
        container.addChild(holder);

        }   

    }

    public function removeBorder():void {
        TweenMax.to(borderNext, .4, {alpha:0});
    }

    public function tweenNext():void {

        var next = container.getChildAt(currentImage);          
        TweenMax.to(next, .4, {transformAroundCenter:{scale:1.1}});
        container.setChildIndex(next, container.numChildren-1);     
        borderNext = next.getChildAt(0)
        TweenMax.to(borderNext, .4, {alpha:1});         
        if (currentImage > 0) {             
            var last = container.getChildAt(currentImage-1);
            TweenMax.to(last, .4, {transformAroundCenter:{scale:1}});               
            borderLast = last.getChildAt(0)
            TweenMax.to(borderLast, .5, {alpha:0});             
        }

        if (currentImage < 6){              
            currentImage ++;
            prevImage = currentImage -1
        }           
    }

    public function tweenPrev():void {  

        var next = container.getChildAt(prevImage);
        TweenMax.to(next, .4, {transformAroundCenter:{scale:1.1}});
        container.setChildIndex(next, container.numChildren-1);         
        var borderNext = next.getChildAt(0)
        TweenMax.to(borderNext, .5, {alpha:1});

        if (prevImage < 7) {                
            var last = container.getChildAt(prevImage+1);
            TweenMax.to(last, .4, {transformAroundCenter:{scale:1}});               
            var borderLast = last.getChildAt(0)
            TweenMax.to(borderLast, 1, {alpha:0});              
        }
        if (prevImage > 0) {                
            prevImage --;
            currentImage --;
        }       

    }


    private function onLoaded(event:Event):void {           
        //loaded
    }



}

}

0 个答案:

没有答案