- package
- {
- public class MouseGame extends Sprite
- {
- private var _sprite:Sprite;
- private var posion:Point;
- public function MouseGame()
- {
- _sprite=new Sprite();
- addChild(_sprite);
- var _shape:Shape=new Shape();
- addChild(_shape);
- _shape.graphics.beginFill(0x000000,1);
- _shape.graphics.lineStyle(1,0,1);
- _shape.graphics.drawCircle(250,250,50);
- _shape.graphics.endFill();
- _sprite.addChild(_shape);
- _sprite.addEventListener(MouseEvent.MOUSE_DOWN,startMascotDrag);
- stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);
- _sprite.addEventListener(Event.ENTER_FRAME, dragMascot);
- }
- private function startMascotDrag(e:MouseEvent):void
- {
- posion=new Point(e.localX,e.localY);//将一个点保存在这个对象中
- }
- private function stopMascotDrag(e:MouseEvent):void
- {
- posion=null;
- }
- private function dragMascot(e:Event):void
- {
- if (posion!=null)
- {
- _sprite.x = mouseX - posion.x;
- _sprite.y = mouseY - posion.y;
- }
- }
- }
- }
代码解析:
首先我们创建一个继续sprite的类,在构造函数里面,画出一个圆,这个圆我们可以通过监听鼠标,进行拖动。
- 这里我们主要使用到的是
- import flash.display.Sprite;
- import flash.events.*;
- import flash.geom.Point;
- import flash.display.Shape;
- 四个包,有没有注意到 import flash.geom.Point; 这个可以记录点的包呢?
- 其实细心发现这个是很有用处。他的作用保存一个点的坐标
-
如何创建一个圆:
-
var _shape:Shape=new Shape();
- addChild(_shape);
- _shape.graphics.beginFill(0x000000,1);//填充黑色颜色,透明度为1
-
- _shape.graphics.lineStyle(1,0,1);//设置线的厚度 颜色和透明度
- _shape.graphics.drawCircle(250,250,50); //画圆
- _shape.graphics.endFill();//结束填充
二.如果让圆可以进行拖动?
首先我们进行一些监听
-
- _sprite.addEventListener(MouseEvent.MOUSE_DOWN,startMascotDrag);
- stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);
- _sprite.addEventListener(Event.ENTER_FRAME, dragMascot);
两个鼠标事件,一个是按下,一个没有按,然后是一个进行拖动的函数。
三.计算位置
通过减法
新的坐标=当前鼠标值-原始的坐标
这样就可以完成了一个简单的鼠标拖动
四.扩展
尝试一下做一些与鼠标交互的游戏吧
好写到这里,累死了