Flash游戏学习笔记:鼠标拖动

来源:互联网 发布:声优黑历史 知乎 编辑:程序博客网 时间:2024/05/17 22:40
  1. package 
  2. {
  3.     
  4.     public class MouseGame extends Sprite
  5.     {
  6.         private var _sprite:Sprite;
  7.         private var posion:Point;
  8.         public function MouseGame()
  9.         {
  10.             _sprite=new Sprite();
  11.             addChild(_sprite);
  12.             var _shape:Shape=new Shape();
  13.             addChild(_shape);
  14.             
  15.             _shape.graphics.beginFill(0x000000,1);
  16.             _shape.graphics.lineStyle(1,0,1);
  17.             _shape.graphics.drawCircle(250,250,50);
  18.             _shape.graphics.endFill();
  19.             _sprite.addChild(_shape);
  20.             _sprite.addEventListener(MouseEvent.MOUSE_DOWN,startMascotDrag);
  21.             stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);
  22.             _sprite.addEventListener(Event.ENTER_FRAME, dragMascot);
  23.         }
  24.         private function startMascotDrag(e:MouseEvent):void
  25.         {
  26.             posion=new Point(e.localX,e.localY);//将一个点保存在这个对象中
  27.         }
  28.         private function stopMascotDrag(e:MouseEvent):void
  29.         {
  30.             posion=null;
  31.         }
  32.         private function dragMascot(e:Event):void
  33.         {
  34.             if (posion!=null)
  35.             {
  36.                 _sprite.x = mouseX - posion.x;
  37.                 _sprite.y = mouseY - posion.y;
  38.             }
  39.         }
  40.     }
  41. }

 

代码解析:

首先我们创建一个继续sprite的类,在构造函数里面,画出一个圆,这个圆我们可以通过监听鼠标,进行拖动。

  1. 这里我们主要使用到的是
  2. import flash.display.Sprite;
  3.     import flash.events.*;
  4.     import flash.geom.Point;
  5.     import flash.display.Shape;
  6. 四个包,有没有注意到 import flash.geom.Point; 这个可以记录点的包呢?
  7. 其实细心发现这个是很有用处。他的作用保存一个点的坐标

如何创建一个圆:

  1. var _shape:Shape=new Shape();
  2.             addChild(_shape);
  3.             _shape.graphics.beginFill(0x000000,1);//填充黑色颜色,透明度为1
  •             _shape.graphics.lineStyle(1,0,1);//设置线的厚度 颜色和透明度
  •             _shape.graphics.drawCircle(250,250,50); //画圆
  •             _shape.graphics.endFill();//结束填充
  • 二.如果让圆可以进行拖动?

     

    首先我们进行一些监听

    1.             _sprite.addEventListener(MouseEvent.MOUSE_DOWN,startMascotDrag);
  •             stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);
  •             _sprite.addEventListener(Event.ENTER_FRAME, dragMascot);
  • 两个鼠标事件,一个是按下,一个没有按,然后是一个进行拖动的函数。

     

    三.计算位置

    通过减法

    新的坐标=当前鼠标值-原始的坐标

    这样就可以完成了一个简单的鼠标拖动

     

    四.扩展

     

    尝试一下做一些与鼠标交互的游戏吧

    好写到这里,累死了

     

     

     

    原创粉丝点击
    热门IT博客
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 佛教心经全文 抄写心经的好处 每天读心经的好处 念心经的好处 抄心经的好处 诵心经的好处 读心经的好处 心经的作用和好处 读心经的禁忌 心经繁体全文 心经全文念诵及回向 心经图片高清 心经全文下载 心经印能法师 心经是什么意思 心经书法作品 心经拼音版全文 菩萨心经全文 般若心经讲解 心经多少个字 心经讲的是什么意思 心经译文解释 观音心经念诵 心经梵文版原文 心经是谁写的 般若心经全文 心经全文解释 每天念心经的正确方法 观音菩萨心经 心经全文译文 心经念诵及回向 般若波若密心经 心经全文念诵拼音 金刚经和心经的区别 心经全文书法 心经共多少字 文殊菩萨心经 心经全文念诵七遍 心经全文注音及解释 心经全文繁体 心经全文多少字