
实例三 点击小图看大图效果
var targetArr:Array=[]; var pointArr:Array=[]; var picArr:Array=[]; var index:int;
var targetPoint=new Point(275,200); for (var i:int=0; i<20; i++) { var point:Point=new Point(); var targetP:Point=new Point();
//var C:Class=getDefinitionByName("cat"+i) as Class;/加载同路径文件夹中的名字为cat+i20张的图片
var bmd:BitmapData=new C(0,0);//库中一个图片类文件 var bmp:Bitmap=new Bitmap(bmd); var mc:MovieClip=new MovieClip(); addChild(mc);
mc.addChild(bmp);
bmp.x=- bmp.width/2; bmp.y=- bmp.height/2; mc.scaleX=mc.scaleY=.4;
i<6?(mc.x=2.5+mc.width/2+i*(mc.width+10),mc.y=mc.height/2):0;//上面六个图片的位置,坐标为图片的中心 
i>=6&&i<10?(mc.x=550-mc.width/2-2.5,mc.y=mc.height/2+mc.height+8+(i-6)*(mc.height+8)):0;//右边四张图片的坐标
i>=10&&i<16?(mc.x=550-mc.width/2-2.5-(i-10)*(mc.width+10),mc.y=400-mc.height/2):0;//下面六张图片坐标
i>=16&&i<20?(mc.x=mc.width/2+2.5,mc.y=400-mc.height/2-mc.height-8-(i-16)*(mc.height+8)):0;//左边四张图片的坐标
point.x=targetP.x=mc.x,point.y=targetP.y=mc.y;//记录此时每张图片的位置 mc.mouseChildren=false;
mc.n=i;//定义mc的私有属性记录每张图片的索引值 picArr.push(mc);//
targetArr.push(targetP); pointArr.push(point); }
var timer:Timer=new Timer(1000);
timer.start();
timer.addEventListener(TimerEvent.TIMER,picMove); var k:int=0;
function picMove(e) {//图片移动效果 k++;
for (var j:int=0; j<pointArr.length; j++) {
targetArr[j].x=pointArr[(k+j)%pointArr.length].x;//当前点的坐标随着k的增加等于目标点坐标循环变换
targetArr[j].y=pointArr[(k+j)%pointArr.length].y;
if (picArr[j].x==275&&picArr[j].y==200) {//说明是中心位置的图片 continue;
} else {//说明是周围的图片
picArr[j].x=pointArr[(k+j)%pointArr.length].x;//让每张图片的坐标循环变换 picArr[j].y=pointArr[(k+j)%pointArr.length].y; } } }
for (i=0; i<picArr.length; i++) { picArr[i].buttonMode=true;
picArr[i].addEventListener(MouseEvent.CLICK,clickF); }
function clickF(e) {
setChildIndex(e.target,numChildren-2);//先把当前被点击的图片放在第二层 objMove(e.target,targetPoint,1,1);
if (picArr[index].x==275,picArr[index].y==200) { objMove(picArr[index],targetArr[index],.15,.15); }
index=e.target.n; }
function
objMove(displayObject:DisplayObject,targetObj:Point,targetScalex:Number,targetScaley:Number) {
///**/参数分别是当前对象,当前点 ,x方向的缩放值,y方向上的缩放值 timer.stop();//先让计时器停止,即点击图片动画过程中让图片移动的事件停止 displayObject.addEventListener(Event.ENTER_FRAME,frame); function frame(e) {
for (var i:int=0; i<picArr.length; i++) { picArr[i].mouseEnabled=false; picArr[i].buttonMode=false;
picArr[i].removeEventListener(MouseEvent.CLICK,clickF);// 点击每张图片后马上先移除点击事件 }
e.target.x+=(targetObj.x-e.target.x)/5;//缓动公式实现缓动效果 e.target.y+=(targetObj.y-e.target.y)/5;
e.target.scaleX+=(targetScalex-e.target.scaleX)/5; e.target.scaleY+=(targetScaley-e.target.scaleY)/5; var
dis:Number=Math.sqrt((targetObj.x-e.target.x)*(targetObj.x-e.target.x)+(targetObj.y-e.target.y)*(targetObj.y-e.target.y));
if (Math.abs(dis)<1) {//目标点和当前点的距离 e.target.x=targetObj.x; e.target.y=targetObj.y;
displayObject.removeEventListener(Event.ENTER_FRAME,frame);//图片达到目标点后移除该帧频事件 trace("ok");
for (i=0; i<picArr.length; i++) {//然后给每张图片再重新添加点击事件 picArr[i].addEventListener(MouseEvent.CLICK,clickF); picArr[i].buttonMode=true; picArr[i].mouseEnabled=true; }
timer.start();//计时器开始运行,即周围图片继续移动 } } }
var sp:Sprite=new Sprite();//画相框 addChild(sp); sp.x=275; sp.y=200;
sp.graphics.lineStyle(15,0xb66700);
sp.graphics.drawRect(-174,-124,348,248); sp.graphics.lineStyle(2,0xa95401);
sp.graphics.drawRoundRect(-177,-127,354,254,10,10); sp.graphics.lineStyle(3,0xa95401);
sp.graphics.drawRoundRect(-173,-123,346,246,10,10); sp.graphics.lineStyle(1.5,0xa95401); sp.graphics.moveTo(-178,-128); sp.graphics.lineTo(-168,-118); sp.graphics.moveTo(178,-128); sp.graphics.lineTo(168,-118); sp.graphics.moveTo(178,128); sp.graphics.lineTo(168,118); sp.graphics.moveTo(-178,128); sp.graphics.lineTo(-168,118);
sp.filters=[new BevelFilter(3,45,0xff9900,1,0x660000,1,5,5,1,3),new DropShadowFilter(4,45,0,1,5,5,.5,3)]; //=======
var format:TextFormat=new TextFormat("Impact",15,0xff00ff,true); var txt:TextField=new TextField(); addChildAt(txt,numChildren-1); txt.text="这里随便写些东西"; txt.wordWrap=true;
txt.setTextFormat(format); txt.width=txt.textWidth; txt.height=txt.textHeight; txt.x=10,txt.y=33;

