WEB开发网
开发学院图形图像Flash Flash ActionScript 3.0(7) - 交互之鼠标事件和键... 阅读

Flash ActionScript 3.0(7) - 交互之鼠标事件和键盘事件

 2009-03-19 12:00:07 来源:WEB开发网   
核心提示: 2、处理鼠标事件在 UI 上画一个物体,由于显示用户的鼠标事件所产生的结果,Flash ActionScript 3.0(7) - 交互之鼠标事件和键盘事件(2),即该物体会向用户在舞台上所单击的位置移动Main.aspackage{ import flash.events.Event;

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;
                }
            }
        }
    }
}

系列文章:

Flash ActionScript 3.0(1) - 数据类型、操作符和流程控制语句

Flash ActionScript 3.0(2) - 包、类、包外类、命名空间、属性、方法、接口和继承

Flash ActionScript 3.0(3) - 以文本形式、XML形式和JSON形式与ASP.NET通信

Flash ActionScript 3.0(4) - 实例之以Hello World, 时钟, 计时器

Flash ActionScript 3.0(5) - 实例之闹钟

Flash ActionScript 3.0(6) - 绘图之图形和转换

上一页  1 2 

Tags:Flash ActionScript 交互

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接