积少成多Flash(7) - ActionScript 3.0 交互之鼠标事件和键盘事件
2009-11-05 00:00:00 来源:WEB开发网2、处理鼠标事件
在 UI 上画一个物体,由于显示用户的鼠标事件所产生的结果,即该物体会向用户在舞台上所单击的位置移动
Main.as
package
{
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.display.MovieClip;
import flash.ui.Keyboard;
import flash.events.MouseEvent;
public class Main extends MovieClip
{
// 鼠标单击位置的坐标
public var targetX:Number = 0;
public var targetY:Number = 0;
// 物体是否再向鼠标单击的位置移动
public var moving:Boolean = false;
// 每次 ENTER_FRAME 物体所需移动的距离
public var step:Number = 5;
public function Main()
{
// 处理鼠标的按下事件(在舞台上侦测该事件)
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
// 用于响应鼠标按下事件的 ENTER_FRAME
this.addEventListener(Event.ENTER_FRAME, enterFrameHandlerForMouse);
}
protected function mouseDownHandler(event:MouseEvent):void
{
// 当用户在舞台上按下鼠标后,获取鼠标的坐标
targetX = event.stageX;
targetY = event.stageY;
// 物体正在向鼠标单击的位置移动
moving = true;
}
protected function enterFrameHandlerForMouse(event:Event):void
{
if (moving)
{
// 计算物体在 X 方向和 Y 方向上分别需要移动的距离
var offsetX:Number = block.x - targetX;
var offsetY:Number = block.y - targetY;
// 计算物体需要旋转的角度
var targetRotation:Number = -Math.atan2(offsetX, offsetY) / (Math.PI / 180);
block.rotation = targetRotation;
if( Math.sqrt((offsetX*offsetX) + (offsetY*offsetY)) > step )
{
// 如果还没有移动到目标位,则继续移动指定的距离
block.y -= step * Math.cos(targetRotation * (Math.PI/180));
block.x += step * Math.sin(targetRotation * (Math.PI/180));
}
else
{
// 物体已经移动到鼠标所单击的位置
moving = false;
}
}
}
}
}
OK
本文示例源代码或素材下载
Tags:积少成多 Flash ActionScript
编辑录入:爽爽 [复制链接] [打 印]- ››ActionScript 2.0中的! 逻辑 NOT 运算符
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
更多精彩
赞助商链接