flash特效原理:粒子爆
2010-03-02 00:00:00 来源:WEB开发网其中:Ball 为通过库链接的链接过来的影片剪辑,因此在创建这个程序的时候,可以在元件库里面 自行添加进去,尝试更改粒子的样貌,这样效果会呈现出不同的形态。
这个只是一个元件,缩放元件的大小,产生的效果也不一样,周边的白色边,加上一些高光的效果,就能够发挥出不错的夜光性。
再对其进行修正,粒子的轨迹也可以是不按随机的,也可以按随机的方向。这样不同的做法,效果看起来会更加不错,相信你会创建出很多很多绚丽的特效,而这些事情就需要去完善。
1. package
2. {
3.
4.
5. import flash.display.MovieClip;
6. import flash.display.DisplayObject;
7. import flash.events.*;
8.
9. public class Main extends MovieClip
10. {
11.
12. //private var list:Array=new Array();//管理粒子
13. //private var speed:int=5;
14. private var contain:MovieClip=new MovieClip();//容器管理粒子
15. public function Main()
16. {
17. init();
18. }
19. private function init():void
20. {
21. addChild(contain);
22. stage.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler);
23. }
24. //生成粒子,200个小球,然后向不同的方向移动,速度不一样,角度也不样
25. private function MouseDownHandler(event:MouseEvent):void
26. {
27. for (var i:int=0; i<200; i++)
28. {
29. var ball:Ball=new Ball();
30. contain.addChild(ball);
31. ball.x=mouseX;
32. ball.y=mouseY;
33. ball.vx=Math.random()*4+2;//随机生成不同的x速度
34. ball.vy=Math.random()*5+2;//随机生成不同的y速度
35. //ball.alpha=Math.random()+0.1;
36. var angle:Number=Math.atan2(Math.random()*400-ball.y,Math.random()*550-ball.x);//随机一个角度
37. ball.angle=angle;
38. ball.addEventListener(Event.ENTER_FRAME,BallMove);
39. //list.push(ball);
40. }
41. }
42. //每一个粒子的移动
43. private function BallMove(event:Event):void
44. {
45. event.currentTarget.x+=Math.cos(event.currentTarget.angle)*event.currentTarget.vx;
46. event.currentTarget.y+=Math.sin(event.currentTarget.angle)*event.currentTarget.vy;
47. //drawLine(mouseX,mouseY,event.currentTarget.x,event.currentTarget.y);
48. if (event.currentTarget.y<0 || event.currentTarget.y>stage.stageHeight||
49. event.currentTarget.x<0 || event.currentTarget.x>stage.stageWidth
50. )
51. {
52. event.currentTarget.removeEventListener(Event.ENTER_FRAME,BallMove);
53. contain.removeChild(DisplayObject(event.currentTarget));
54. }
55. }
56. //绘制线条,这个方法你可以尝试一下,
57. private function drawLine(x1,y1,x2,y2:Number):void
58. {
59. graphics.clear();
60. graphics.lineStyle(1,0xff0000);
61.
62. for (var i:int=0; i<=contain.numChildren; i++)
63. {
64. graphics.moveTo(x1,y1);
65. graphics.lineTo(contain.getChildAt(i).x,contain.getChildAt(i).y);
66. }
67. }
68. }
69. }
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接