阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2012-02-16 20:49  阳光VIP  阅读(268)  评论(0编辑  收藏  举报
  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. 其实细心发现这个是很有用处。他的作用保存一个点的坐标
    8. 如何创建一个圆:

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

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

 

首先我们进行一些监听

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

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

 

三.计算位置

通过减法

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

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

 

四.扩展

 

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

好写到这里,累死了