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

  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;
    •     import flash.events.*;
    •     import flash.geom.Point;
    •     import flash.display.Shape;
    • 四个包,有没有注意到 import flash.geom.Point; 这个可以记录点的包呢?
    • 其实细心发现这个是很有用处。他的作用保存一个点的坐标

如何创建一个圆:

  1. var _shape:Shape= new  Shape();
  2.             addChild(_shape);
  3.             _shape.graphics.beginFill(0x000000,1);//填充黑色颜色,透明度为1
  4.             _shape.graphics.lineStyle(1,0,1);//设置线的厚度 颜色和透明度
  5.             _shape.graphics.drawCircle(250,250,50); //画圆
  6.             _shape.graphics.endFill();//结束填充

二.如果让圆可以进行拖动?

 

首先我们进行一些监听

  1.             _sprite.addEventListener(MouseEvent.MOUSE_DOWN,startMascotDrag);
  2.             stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);
  3.             _sprite.addEventListener(Event.ENTER_FRAME, dragMascot);

两个鼠标事件,一个是按下,一个没有按,然后是一个进行拖动的函数。

 

三.计算位置

通过减法

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

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

 

四.扩展

 

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

好写到这里,累死了

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值