flash 绘图API:鼠标拖动小球
2010-03-02 00:00:00 来源:WEB开发网第四步:小球运动
怎样才能运行?其实就是转换为角度的问题了。要让小球产生移动,则需要知道他的速度,分解其vx 和vy 两个方向,计算出他们的位移
1. private function BallMove():void
2. {
3. for (var i:int=0; i<list.length; i++)
4. {
5. var angle:Number=Math.atan2(mouseY-list[i].y,mouseX-list[i].x);// 计算出鼠标点,与每一个小球直接的角度值
6. list[i].x+=Math.cos(angle)*speed;//位移。
7. list[i].y+=Math.sin(angle)*speed;
8. }
9. }
总结:这些小玩意,只是绘图api 一些最简单应用,有了这些应用好,可以扩展很多很多意想不到的效果。不过不要忘记,效果背后往往是一些数学和物理的原理。 这一点很重要。
有什么想法?如果有记下来吧,对你说不定有帮助。
1. package
2. {
3. import flash.display.MovieClip;
4. import flash.events.*;
5.
6. //拖动小球
7. public class Main extends MovieClip
8. {
9.
10. private var list:Array=new Array();//列表
11. private var key:Boolean=false;
12. private var speed:int=5;//小球移动的速度
13. public function Main()
14. {
15. creatBall();
16. init();
17. }
18. private function init():void
19. {
20. stage.addEventListener(MouseEvent.MOUSE_DOWN,MouseDown);
21. stage.addEventListener(MouseEvent.MOUSE_UP,MouseUp);
22. stage.addEventListener(Event.ENTER_FRAME,Run);
23.
24. }
25. private function MouseDown(event:MouseEvent):void
26. {
27.
28. drawLine(mouseX,mouseY);
29. key=true;
30. }
31.
32. private function MouseUp(event:MouseEvent):void
33. {
34. key=false;
35. graphics.clear();
36.
37. }
38. private function Run(event:Event):void
39. {
40. if (key)
41. {
42. BallMove();
43. drawLine(mouseX,mouseY);
44. }
45. }
46. private function creatBall():void
47. {
48. for (var i:int=0; i<10; i++)
49. {
50. var ball:Ball=new Ball();
51. addChild(ball);
52. list.push(ball);
53. ball.x=Math.random()*550;
54. ball.y=Math.random()*400;
55.
56. }
57. }
58. //绘制线条
59. private function drawLine(x1,y1):void
60. {
61. graphics.clear();
62. graphics.lineStyle(1,0xff0000);
63.
64. for (var i:int=0; i<list.length; i++)
65. {
66. graphics.moveTo(mouseX,mouseY);
67. graphics.lineTo(list[i].x,list[i].y);
68. }
69.
70. }
71. //难点就是怎样使用鼠标拖动小球移动
72. private function BallMove():void
73. {
74. for (var i:int=0; i<list.length; i++)
75. {
76. var angle:Number=Math.atan2(mouseY-list[i].y,mouseX-list[i].x);// 计算出鼠标点,与每一个小球直接的角度值
77. list[i].x+=Math.cos(angle)*speed;//位移。
78. list[i].y+=Math.sin(angle)*speed;
79. }
80. }
81.
82.
83. }
84. }
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接