·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

AS3代码:一步一步制作躲避碰撞的盒子

时间:2011-06-13 14:32中国教程
在这个Actionscript 3教程中,我将为你展示怎样创建一个躲避被一个球碰撞的盒子。看上面的效果(单击那白色的球使它运动),让我们马上开始吧


效果演示:(请用鼠标点击小球观看效果)
 

在这个Actionscript 3教程中,我将为你展示怎样创建一个躲避被一个球碰撞的盒子。看上面的效果(单击那白色的球使它运动),让我们马上开始吧!

设置环境

1.创建一个新的Flash Actionscript 3影片 (340x200).
2.在舞台上画一个矩形.设置大小为20x20.
3.将矩形转换为MC.给它取一个你喜欢的名字,将注册点移到中心!
4.设连接属性中MC的类名为"Box".如果你对MC连接属性感到陌生的话,请查看 Actionscript 3 扩展类教程.
5.现在在舞台上画一个10x10的园.
6.将园转换为MC.给它取一个你喜欢的名字,将注册点移到中心!
7.设连接属性中MC的类名为"Ball".
8.从舞台上删除园和矩形.
进入 Actionsctipt9. 在第一帧输入下列Actionscript代码.

  1. //这个数组包含所有的盒子   
  2. var boxes:Array = new Array();   
  3. //设置球的速度   
  4. var ballSpeed:Number = -4;   
  5. //循环添加8个盒子到舞台   
  6. for (var i = 0; i < 9; i++) {   
  7. //创建一个盒子   
  8. var box:Box = new Box();   
  9. //添加一个位置   
  10. box.y = 150;   
  11. boxbox.x = box.width * i * 1.5 + 40;   
  12. //添加一个盒子到数组   
  13. boxes.push(box);   
  14. //在舞台上添加一个盒子   
  15. addChild(box);   
  16. }   
  17. //创建一个盒子并设置它的右边   
  18. var ball:Ball = new Ball();   
  19. ball.x = 320;   
  20. ball.y =155;   
  21. //使球看起来象按钮 (手形光标)   
  22. ball.buttonMode = true;   
  23. //把球添加到舞台上   
  24. addChild(ball);   
  25. //侦听用户点击球的时候   
  26. ball.addEventListener(MouseEvent.CLICK, ballClicked);   
  27. //当用户点击球时这个函数被调用   
  28. function ballClicked(e:Event):void {   
  29. //在整个动画过程中添加ENTER_FRAME   
  30. addEventListener(Event.ENTER_FRAME, enterFrameHandler);   
  31. }   
  32. //在每一帧这个函数被调用   
  33. function enterFrameHandler(e:Event):void {   
  34. //将球左移2像素   
  35. ball.x += ballSpeed;   
  36. for (var i = 0; i < boxes.length; i++) {   
  37. //从数组获得一个盒子   
  38. var box:Box = boxes as Box;   
  39. //检测从球到盒子的x距离   
  40. var distX:Number = ball.x - box.x;   
  41. //球来自右边   
  42. if (distX < 50 && distX > 0 && ballSpeed < 0) {   
  43. //把盒子推上去   
  44. box.y -2;   
  45. }   
  46. //球离开左边   
  47. else if (distX < 50 && distX < 0 && ballSpeed < 0) {   
  48. //如果球没有在原来的位置则往下落   
  49. if (box.y <= 150) {   
  50. box.y += 2;   
  51. }   
  52. }   
  53. //球从左边来   
  54. if (distX < 0 && distX > -50 && ballSpeed > 0) {   
  55. //往上推盒子   
  56. box.y -2;   
  57. }   
  58. //球离开右边   
  59. else if (distX < 50 && distX > 0 && ballSpeed > 0) {   
  60. //如果球没在原来的位置则往下落   
  61. if (box.y <= 150) {   
  62. box.y += 2;   
  63. }   
  64. }   
  65. //如果球到了左边则改变方向   
  66. //或者右边边缘   
  67. if (ball.x + 5 >stage.stageWidth || ball.x - 5 < 0) {   
  68. //反转速度   
  69. ballSpeed *= (-1);   
  70. }   
  71. }   
  72. }   
  73. 测试你的影片,我希望你能从这里学到一些新的东西。记住如果你有任何问题,请毫不犹豫地到论坛提问。  
  74.  
  75. 下面附代码供学习研究:  
  76.  
  77. var boxes:Array = new Array();    
  78. var ballSpeed:Number = -4;    
  79. for (var i = 0; i < 9; i++) {    
  80. var box:Box = new Box();    
  81. box.y = 150;    
  82. boxbox.x = box.width * i * 1.5 + 40;    
  83. boxes.push(box);    
  84. addChild(box);    
  85. }    
  86. var ball:Ball = new Ball();    
  87. ball.x = 320;    
  88. ball.y =155;    
  89. ball.buttonMode = true;    
  90. addChild(ball);    
  91. ball.addEventListener(MouseEvent.CLICK, ballClicked);    
  92. function ballClicked(e:Event):void {    
  93. addEventListener(Event.ENTER_FRAME, enterFrameHandler);    
  94. }    
  95. function enterFrameHandler(e:Event):void {    
  96. ball.x += ballSpeed;    
  97. for (var i = 0; i < boxes.length; i++) {    
  98. var box:Box = boxes[i];    
  99. var distX:Number = ball.x - box.x;    
  100. if (distX < 50 && distX > 0 && ballSpeed < 0) {    
  101. box.y -2;    
  102. }    
  103. else if (distX < 50 && distX < 0 && ballSpeed < 0) {    
  104. if (box.y <= 150) {    
  105. box.y += 2;    
  106. }    
  107. }    
  108. if (distX < 0 && distX > -50 && ballSpeed > 0) {    
  109. box.y -2;    
  110. }    
  111. else if (distX < 50 && distX > 0 && ballSpeed > 0) {    
  112. if (box.y <= 150) {    
  113. box.y += 2;    
  114. }    
  115. }    
  116. if (ball.x + 5 >stage.stageWidth || ball.x - 5 < 0) {    
  117. ballSpeed *= (-1);    
  118. }    
  119. }    

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器