艺虎动画 > flash制作伸缩动画效果

flash制作伸缩动画效果

翼虎动漫   2011-1-15

先看效果:
http://img.flashzhizuo.net.cn/us/2011115151757132.swf

详细代码:

var h:Number=stage.stageHeight;

var num:uint=50;

var k:uint=0;

var n:uint=0;

var vh:uint=20;

var m:uint=0;

var j:uint=0;

var arr:Array=[];

var crr:Array=[Pic1,Pic2,Pic3,Pic4,Pic5,Pic6,Pic7,Pic8];//源位图数组

//=====================位图背景

var pic0:BitmapData=new Pic0(0,0);

var bimap0:Bitmap=new Bitmap(pic0);

bimap0.width=550;

bimap0.height=400;

addChild(bimap0);

bimap0.y=(stage.stageHeight-bimap0.height)/2;

//=================

var sp:Sprite=new Sprite ();

addChild(sp);

arr=fg(crr);

addEventListener(Event.ENTER_FRAME,f);//

//==========分割图片

function fg(drr:Array):Array {

        var brr:Array=[];//放置分割小位图 的影片剪辑

        var pic:BitmapData=new drr[j%drr.length](0,0);// 

        j++;

        for (var i:uint=0; i<num; i++) {

                var w:Number=pic.width;

                var h:Number=pic.height;

                var bmd:BitmapData=new BitmapData(w/num,h);//创建小位图条

                var bmp:Bitmap=new Bitmap(bmd);

                bmd.copyPixels(pic,new Rectangle(i*w/num,0,w/num,h),new Point(0,0));//拷贝源位图到小位图条

                var mc1:MovieClip=new MovieClip();

                mc1.addChild(bmp);

                mc1.x=i*w/num;

                mc1.height*=3;

                //mc1.scaleY=3;

                mc1.y=(stage.stageHeight-mc1.height)/2;

                mc1.alpha=0.5;

                brr.push(mc1);//压入存放小位图的影片剪辑mc

                //sp.addChild(mc1);

        }

        return brr;

}

//==============================

function f(e:Event) {

        m=0;

        k<=2*(num-1)&&k%2==0?[sp.addChild(arr[k/2]),arr[k/2].addEventListener(Event.ENTER_FRAME,mcf)]:0;

        k++;

        k>2*(num-1)?[k=0,n=0,removeEventListener(Event.ENTER_FRAME,f)]:0;

}



//===============

function mcf(e:Event) {

        var mc:MovieClip=e.target as MovieClip;//获取侦听目标对象影片剪辑

        if (mc.height>400) {

                mc.height-=vh;

                //mc.y+=vh/2;

                mc.y=(stage.stageHeight-mc.height)/2;

                mc.alpha+=0.05;

        } else {

                arr.indexOf(mc)==num-1?n++:0;

                if (n>=10&&mc.alpha>0) {//判断小位图条淡出的条件

                        mc.alpha-=0.03;//

                } else if (mc.alpha<=0) {

                        mc.removeEventListener(Event.ENTER_FRAME,mcf);

                        m++;//对移除小位图帧频侦听的个数计数

                        if (m==num) {

                                //k=0;

                                //n=0;

                                arr=fg(crr);

                                for (var i:int=sp.numChildren-1; i>=0; i--) {

                                        sp.removeChildAt(0);

                                }

                                addEventListener(Event.ENTER_FRAME,f);

                                mc.removeEventListener(Event.ENTER_FRAME,mcf);

                        }

                }

        }

}