WEB开发网
开发学院图形图像Flash 积少成多Flash(7) - ActionScript 3.0 交互之鼠标... 阅读

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

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

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

本文示例源代码或素材下载

上一页  1 2 

Tags:积少成多 Flash ActionScript

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