TweenLite的效果:
fla代码:
runPic.as
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 }
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 }
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 }