您的位置:首页 > 其它

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

2008-11-28 21:16 459 查看
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);

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



三.计算位置

通过减法

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

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



四.扩展



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

好写到这里,累死了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: