flash特效原理:图片滑动放大效果
2010-03-02 00:00:00 来源:WEB开发网第三步:测试,通过复制TestMc。然后就进行鼠标监听,而这里我们采用的是碰撞的方法,而不是鼠标对每一张图片向上监听,为什么?这里留个疑问呢。
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.Shape;
12. import flash.display.Graphics;
13. import flash.display.GradientType;
14. import flash.utils.getDefinitionByName;
15. import flash.display.Loader;
16. import flash.net.*;
17. import flash.display.DisplayObjectContainer;
18.
19. public class main extends MovieClip
20. {
21. private var array:Array;
22. private var list:MovieClip;
23. private var myphoto:RollPhoto;//图片滚动对象
24. private var contain:MovieClip=new MovieClip();
25. private var loader:Loader;
26. public function main()
27. {
28. init();
29. }
30. private function init():void
31. {
32. myphoto=new RollPhoto(stage);//初始化对象
33. myphoto.max=1.4;//设置最大缩放比例
34. myphoto.ratio=0.0025;//设置自定义比例
35. myphoto.distance=10;//设置图片间的距离
36. createObj();
37. addEventListener(Event.ENTER_FRAME,Run);
38. addChild(contain);
39. }
40. //创建物体
41. private function createObj():void
42. {
43. array = new Array();
44. list = new MovieClip();
45. list.y=60;
46. list.x=200;
47. list.name = "list";
48. addChild(list);
49.
50. for (var i:uint=0; i<10; i++)
51. {
52. var myclass:Object=getDefinitionByName("TestMc");
53. var bit:MovieClip= new myclass() as MovieClip;
54. bit.title.text="Menu"+i;
55. bit.ID=i;
56. bit.mouseChildren = false;
57. bit.buttonMode = true;
58. bit.x =20;
59. bit.y =bit.height/2+i*(bit.height+10);
60. array.push(bit);
61. list.addChild(bit);
62. bit.addEventListener(MouseEvent.MOUSE_DOWN,listdown);
63. }
64. stage.addEventListener(MouseEvent.MOUSE_MOVE,listmove);
65. }
66. private function Run(event:Event):void
67. {
68. memory.text=String(System.totalMemory/1024)+"/kb";//内存监控
69. }
70. private function listmove(e:MouseEvent):void
71. {
72. if (list.hitTestPoint(mouseX,mouseY))
73. {
74. myphoto.ZoomPhotoY(array);//以y轴为例
75. }
76. else
77. {
78. System.gc();
79. myphoto.RestPosition(array,"y");
80. }
81. }
82. private function listdown(event:MouseEvent):void
83. {
84. trace(event.currentTarget);
85. //removeAllChildren(contain);//删除容器中对象
86. //load(event.currentTarget.ID);
87. }
88. //加载外部图片
89. private function load(path:String):void
90. {
91. loader=new Loader();
92. loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
93. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onError);
94. loader.load(new URLRequest(path));
95. }
96. private function onComplete(event:Event):void
97. {
98. loader.removeEventListener(Event.COMPLETE,onComplete);
99. contain.addChild(event.currentTarget.content);
100. contain.alpha=0;
101. contain.x=150;
102. contain.y=100;
103.
104. }
105. private function onError(event:Event):void
106. {
107. throw new Error("路径错误");
108. }
109.
110. private function removeAllChildren(container:DisplayObjectContainer):void
111. {
112. while (container.numChildren>0)
113. {
114. container.removeChildAt(0);
115. }
116.
117. }
118. }
119. }
四 输出效果图
再看看以x轴的效果是如何;可以根据自己需要还可以增加一些阴影倒影类。
查看原图(大图)
五、小结
我们知道,特效是源于数学的理解,有了这一层基础,我们会制作出更多不错的效果,通过研究这些特效,而不要忘记理解背后的原理。同样,这个程序依然可以进行扩展,可以进行其修改以达到自己满意的效果,如增加一些倒影类结合图片这样看起来就更加酷。
好就介绍到这里。
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接