TweenLite使用一例

TweenLite的效果:

fla代码:
1 var a:runPic=new runPic("http://images.cnblogs.com/cnblogs_com/ddw1997/img/yaoming.jpg");
2 addChild(a);
3 a.addEventListener(runPic.LOADER_EVENT,set_xy);
4 function set_xy(e:Event ):void {
5     a.x=(stage.stageWidth-a.width)/2;
6     a.y=(stage.stageHeight-a.height)/2;
7     a.removeEventListener(runPic.LOADER_EVENT,set_xy);
8 }

runPic.as
 1 /*===========================================================
 2 * 构造函数有五个参数,第一个是图片地址是必需的。
 3 * var a:runPic=new runPic("yaoming.jpg");
 4 * addChild(a);
 5 * a.addEventListener(runPic.LOADER_EVENT,set_xy);
 6 * function set_xy(e:Event ):void {
 7 * a.x=(stage.stageWidth-a.width)/2;
 8 * a.y=(stage.stageHeight-a.height)/2;
 9 * a.removeEventListener(runPic.LOADER_EVENT,set_xy);
10 * }
11 *=================作者;ddw1997(20090703)======================*/
12 package {
13     //Import TweenLite
14     import gs.*;
15     import gs.easing.*;
16     import flash.display.Bitmap;
17     import flash.display.BitmapData;
18     import flash.display.Sprite;
19     import flash.display.MovieClip;
20     import flash.display.Loader;
21     import flash.net.URLRequest;
22     import flash.events.Event;
23     import flash.events.MouseEvent;
24     import flash.geom.Rectangle;
25     import flash.geom.Point;
26     public class runPic extends Sprite {
27         private var X_num:int;//宽等分数
28         private var Y_num:int;//高等分数
29         private var X_width:Number;//小块的宽
30         private var Y_height:Number;//小块的高
31         private var line_Color:uint;//小块边线颜色
32         private var line_Width:uint;//小块边线宽度
33         private var image_Num:int;//统计分成小块的数量
34         private var image_URL:String;//图片地址
35         private var imageLoader:Loader;
36         public static var LOADER_EVENT = "loaderevent";
37         public function runPic(image_url:String,x_num:int=10,y_num:int=10,line_color:uint=0xffffffff,line_width:int=1):void {
38             X_num = x_num;
39             Y_num = y_num;
40             line_Color = line_color;
41             line_Width = line_width;
42             image_URL = image_url;
43             init();
44         }
45         private function init():void {
46             imageLoader = new Loader();
47             imageLoader.load(new URLRequest(image_URL));
48             imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
49         }
50         private function completeHandler(event:Event):void {
51             var image_Data:BitmapData = event.target.content.bitmapData;
52             X_width = Math.floor(image_Data.width / X_num);//取整便于获得像素的整数值,使得边框的像素太小时不至于被遮盖。
53             Y_height = Math.floor(image_Data.height / Y_num);
54             image_Num = 0;
55             for (var i = 0; i < X_num; i++) {
56                 for (var j = 0; j < Y_num; j++) {
57                     var image_MC:MovieClip = new MovieClip();//MovieClip便于响应鼠标事件及动态添加属性。
58                     var image_bitmap:Bitmap = new Bitmap();
59                     image_bitmap.bitmapData = new BitmapData(X_width + 2 * line_Width,Y_height + 2 * line_Width,true,line_Color);
60                     image_bitmap.bitmapData.copyPixels(image_Data,new Rectangle(i * X_width, j * Y_height, X_width, Y_height),new Point(line_Width,line_Width));
61                     image_MC.addChild(image_bitmap);
62                     image_MC.x = i * (X_width+line_Width);
63                     image_MC.y = j * (Y_height+line_Width);
64                     image_MC.oldX = image_MC.x;
65                     image_MC.oldY = image_MC.y;
66                     image_MC.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
67                     addChild(image_MC);
68                     if (image_Num == X_num * Y_num - 1) {
69                         dispatchEvent(new Event(LOADER_EVENT));//发布广播小块全部完成
70                     }
71                     image_Num++;
72                 }
73             }
74         }
75         private function mouseOverHandler(e:Event):void {
76             var image_MC:MovieClip = e.target as MovieClip;
77             var randomX:Number = Math.random() * 1000 - 500;
78             var randomY:Number = Math.random() * 1000 - 500;
79             var targetX:Number = image_MC.x + randomX;
80             var targetY:Number = image_MC.y + randomY;
81             TweenLite.to(image_MC, 1, {x:targetX, y:targetY, onComplete:outTweenFinished, onCompleteParams:[image_MC]});
82             setChildIndex(image_MC,image_Num - 1);//让小块到最上层
83             image_MC.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);//让小块删除侦听
84         }
85         private function outTweenFinished(image_MC:MovieClip):void {
86             var oldX = image_MC.oldX;
87             var oldY = image_MC.oldY;
88             TweenLite.to(image_MC, 1, {x:oldX, y:oldY, onComplete:inTweenFinished, onCompleteParams:[image_MC]});
89         }
90         private function inTweenFinished(image_MC:MovieClip):void {
91             image_MC.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);//让小块重新侦听
92         }
93 
94     }
95 }
posted @ 2009-08-09 15:17  ddw1997  阅读(1965)  评论(0编辑  收藏  举报