flash特效原理:图片滑动放大效果(2)
2010-03-02 00:00:00 来源:WEB开发网完成之后,我们还需要对其进行倒影设置,这次采用网上一些倒影类的做法,辅助我们完成这个功能
var r1:Reflect = new Reflect({mc:bit, alpha:30, ratio:60, distance:0, updateTime:-1, reflectionDropoff:0});
Reflect类就是一个倒影的类,在adobe 核心类库当中也存在的。效果也不错。第一个参数指定影片剪辑,第二是透明度,第三个显示的多少,第四个距离。其他是一个偏移等。日后有时间会补充这种讲解。
完成之后,也会发现这个类其实不一定适合我们这种效果,因为我们所做的并不是希望注册点在左上角,而是希望在其底部。这样会造成这个类本身设计一些缺陷,不得不最后设置他的位置。因此需要通过更改他的注册点,否则会看不到效果
下面代码清单:
其中
import com.image.RollPhoto;
import com.image.Reflect;
import com.image.tool.Contain;
这一次和上次做法差不多,增加我们使用了Reflect 这个类。Contain类当中,有一个更加注册点的做法,来源于6DN的做法。效果很不错。拼合了就可以出现上面的图片效果。
总的代码:主要分为加载图片的部分,这一部分可以单独分开出去的。创建图片的部分,还有运算部分。
1. package
2. {
3. import flash.display.MovieClip;
4. import flash.events.*;
5. import flash.geom.*;
6. import flash.system.*;
7. import flash.text.*;
8. import flash.display.BitmapData;
9. import flash.display.Bitmap;
10. import flash.display.DisplayObject;
11. import flash.display.Loader;
12. import flash.net.*;
13. import com.image.RollPhoto;
14. import com.image.Reflect;
15. import com.image.tool.Contain;
16.
17. public class Main extends MovieClip
18. {
19. private var array:Array= new Array();//用于管理的数组
20. private var list:MovieClip=new MovieClip();//图片容器
21. private var myphoto:RollPhoto;//图片滚动对象
22. private var count:int=0;//图片加载的计数器
23. private var imageList:Array=new Array();
24. public function Main()
25. {
26. init();
27. }
28. private function init():void
29. {
30. myphoto=new RollPhoto(stage);//初始化对象
31. myphoto.setPorperty(1.4,0.0025,8);//设置属性
32. addEventListener(Event.ENTER_FRAME,Run);
33. addImages("./image/1.png","./image/2.png","./image/3.png","./image/4.png","./image/5.png","./image/6.png","./image/7.png");//外部加载图片
34. addChild(list);
35. list.y=60;
36. list.x=20;
37.
38. }
39. //创建列表物体
40. private function createObj(images:Array):void
41. {
42.
43. for (var i:uint=0; i<images.length; i++)
44. {
45. var bit:MovieClip=new MovieClip();//空白影片剪辑
46. bit.addChild(images[i]);
47. bit.buttonMode=true;
48. bit.x=i*(bit.width+8);
49. bit.y=150;
50. var r1:Reflect = new Reflect({mc:bit, alpha:30, ratio:60, distance:0, updateTime:-1, reflectionDropoff:0});
51. array.push(bit);//数组管理
52. list.addChild(bit);//容器管理
53. Contain.RegPoint(bit,new Point(50,140));//重新更改注册点
54. bit.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
55. }
56. stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
57. }
58.
59. private function Run(event:Event):void
60. {
61. memory.text=String(System.totalMemory/1024)+"/kb";//内存监控
62. }
63. private function mouseMoveHandler(e:MouseEvent):void
64. {
65. if (list.hitTestPoint(mouseX,mouseY) && mouseY<300)
66. {
67. myphoto.ZoomX(array);//以x轴为例
68. }
69. else
70. {
71. System.gc();
72. myphoto.Rest(array,"x");//复位
73. }
74. }
75.
76. private function mouseDownHandler(event:MouseEvent):void
77. {
78. trace(event.currentTarget);
79. }
80. //加载外部图片
81. private function addImages(...args):void
82. {
83. count=args.length;
84. for(var i:int=0;i<args.length;i++)
85. {
86. var loader:Loader=new Loader();
87. loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
88. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onError);
89. loader.load(new URLRequest(args[i]));
90. }
91. }
92. private function onComplete(event:Event):void
93. {
94. var bitmap:Bitmap=event.currentTarget.content as Bitmap;
95. imageList.push(bitmap);
96. event.currentTarget.removeEventListener(Event.COMPLETE,onComplete);
97. count--;
98. if(count==0)
99. {
100. trace(imageList.length);
101. createObj(imageList);
102. }
103.
104.
105. }
106. private function onError(event:Event):void
107. {
108. throw new Error("路径错误");
109. }
110.
111.
112. }
113. }
不足地方:
目前来讲,感觉到计算的效率并不是很理想。需要效果能够出来,但依旧希望有所提高。任何计算都需要付出代价。因为个人能力有限,只能日后如果能够想到就继续完善这种做法。可以对其代码进行修改,要是要更加好的做法 可以留言告诉我
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接