积少成多Flash(7)

介绍

演示使用 Flash ActionScript 3.0 来监听用户的键盘事件和鼠标事件,并对 其作相应的处理

键盘事件 - 在 flash.events.KeyboardEvent 类下。只有两个事件类型 KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP 。

鼠标事件 - 在 flash.events.MouseEvent 类下。常用的事件类型有 MouseEvent.MOUSE_DOWN, MouseEvent.DOUBLE_CLICK, MouseEvent.MOUSE_UP, MouseEvent.MOUSE_OVER, MouseEvent.MOUSE_MOVE 和 MouseEvent.MOUSE_OUT 等 。

1、处理键盘事件

做 4 个只有两帧的 MovieClip 并放到 UI 上,分别用于提示上/下/左/右键 的按键情况,默认情况下显示第一帧,当用户按下了对应的键时则显示第二帧。 这 4 个 MovieClip 的名称分别为 btnUp, btnDown, btnLeft, btnRight

再在 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 isUp:Boolean = false;
        public var isDown:Boolean = false;
        public var isLeft:Boolean = false;
        public var isRight:Boolean = false;

        // 每次 ENTER_FRAME 物体所需移动的距离
        public var step:Number = 5;

        public function Main()
        {
            // 设置四个用于显示方向的 MovieClip 的初始状态 为停在第一帧
            btnUp.stop();
            btnDown.stop();
            btnLeft.stop();
            btnRight.stop();

            // 处理按键的按下、放开事件(在舞台上侦测该事 件)
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressHandler);
            stage.addEventListener(KeyboardEvent.KEY_UP, keyReleaseHandler);
            // 用于响应按键事件的 ENTER_FRAME
            this.addEventListener(Event.ENTER_FRAME, enterFrameHandlerForKeyboard);
        }

        protected function keyPressHandler (event:KeyboardEvent):void
        {
            // 检测用户按下的键
            switch (event.keyCode)
            {
                case Keyboard.UP:
                    isUp = true;
                    btnUp.gotoAndStop(2);
                    block.rotation = 0;
                    break;

                case Keyboard.DOWN: // 按的是“下”键
                    isDown = true; // 保存用户的按 键信息。即用户正在按“下”键
                    btnDown.gotoAndStop(2); // 用 于显示方向“下”的 MovieClip 停到第二帧
                    block.rotation = 180; // 物体 旋转 180 度
                    break;

                case Keyboard.LEFT:
                    isLeft = true;
                    btnLeft.gotoAndStop(2);
                    block.rotation = 270;
                    break;

                case Keyboard.RIGHT:
                    isRight = true;
                    btnRight.gotoAndStop(2);
                    block.rotation = 90;
                    break;
            }
        }

        protected function keyReleaseHandler (event:KeyboardEvent):void
        {
            // 检测用户放开的键
            switch( event.keyCode )
            {
                case Keyboard.UP: // 按的是“上”键
                    isUp = false; // 保存用户的按 键信息。即用户已经不再按“上”键了
                    btnUp.gotoAndStop(1); // 用于 显示方向“上”的 MovieClip 停到第一帧
                    break;

                case Keyboard.DOWN:
                    isDown = false;
                    btnDown.gotoAndStop(1);
                    break;

                case Keyboard.LEFT:
                    isLeft = false;
                    btnLeft.gotoAndStop(1);
                    break;

                case Keyboard.RIGHT:
                    isRight = false;
                    btnRight.gotoAndStop(1);
                    break;
            }
        }

        protected function enterFrameHandlerForKeyboard (event:Event):void
        {
            // 根据用户的按键情况。将物体向上/下/左/右移动 指定的距离
            if (isLeft)
            {
                block.x -= step;
            }
            if (isRight)
            {
                block.x += step;
            }
            if (isUp)
            {
                block.y -= step;
            }
            if (isDown)
            {
                block.y += step;
            }
        }
    }
}

时间: 2024-11-27 10:19:25

积少成多Flash(7)的相关文章

积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引

Flash 之 ActionScript 3.0 1.积少成多Flash(1) - ActionScript 3.0 基础之数据类型.操作符和流程控制语句 介绍 Flash ActionScript 3.0 中所有的数据类型都是对象,操作符和流程控制语句的语法与C#类似   2.积少成多Flash(2) - ActionScript 3.0 基础之包.类.包外类.命名空间.属性.方法.接口和继承 介绍 Flash ActionScript 3.0 是一种面向对象的语言,包.类.包外类.命名空间.

积少成多Flash(10)

积少成多Flash(10) - Flex 3.0 状态转换(State), 状态转换的过渡效果(State Transition), 自定义鼠标指针 介绍 演示 Flex 3.0 中的转换状态及转换状态中的过度效果,自定义鼠标指针 状态转换(State) - 对 UI 状态,以某一种编程模型做转换 状态转换的过渡效果(State Transition) - 设置 UI 状态的转换过程中的过 渡效果 自定义鼠标指针 - 对鼠标指针的样式做自定义设置 在线DEMO http://www.cnblog

积少成多Flash(8)

积少成多Flash(8) - ActionScript 3.0 网页之获取参数,JavaScript与ActionScript之间的相互调用 介绍 演示使用 Flash ActionScript 3.0 获取配置参数,页面参数,以及 js 与 as 间的交互 参数获取 - 通过 Application.application.stage.loaderInfo.parameters[param] 获取配置参数 (flashVars):通过 JavaScript 获取 url 参数 与JavaScr

积少成多Flash(3)

积少成多Flash(3) - ActionScript 3.0 基础之以文本形式.XML形式和JSON形式与ASP.NET通信 示例 Text.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.

积少成多Flash(2)

积少成多Flash(2) - ActionScript 3.0 基础之包.类.包外类.命名空间.属性.方法.接口和继承 示例 FunctionTest.as package actionScript { import flash.display.Sprite; public class FunctionTest extends Sprite { public function FunctionTest() { } // 减法 public function Subtract(a:int, b:i

积少成多Flash(9)

介绍 演示 Flex 3.0 中的布局控件的应用,样式和皮肤的应用 布局控件 - Flex 中常用的布局控件一览 样式 - 通过 css 控制 Flex 中各个控件的样 式 皮肤 - 使用 Flash 开发的 swf 做控件的皮肤 在线DEMO http://www.cnblogs.com/webabcd/archive/2009/11/09/1598980.html 1.布局控件一览 Layout.mxml <?xml version="1.0" encoding="

积少成多Flash(12)

介绍 演示 Flex 3.0 中的验证控件的应用,以及各种缓动效果(easing)的 应用 Validator - 各种验证控件的基类,其可用于必填验证 DateValidator - 日期验证控件 EmailValidator - Email 验证控件 RegExpValidator - 正则表达式验证控件 缓动(easing) - 系统自带的动 画缓动效果,以及自定义缓动效果 加密/解密 - 常用加密算法的 AS3 库的应 用 其他 - 其他一些常用的东西 在线DEMO http://www

积少成多Flash(11)

介绍 演示 Flex 3.0 中的各种动画效果(effect)的应用 Zoom - 放大/缩小 Wipe - 从上/下/左/右 4 个方向 线性渐变地 对控件做 删除/显示 Rotate - 旋转 Resize - 调整控件大小 Fade - 淡入/淡出 Move - 改变控件位置 Iris - 显示/消失(放射性渐变) Blur - 模糊 Dissolve - 对控件做alpha修改 Glow - 对控件做周边发光 SoundEffect - 播放一段音频 Parallel - 对各种 eff

积少成多Flash(6)

介绍 演示使用 Flash ActionScript 3.0 画一些基本的图形,以及对绘制的图形或 其他可视对象做一些基本的转换 画图 - 通过 Shape 对象的 graphics 属性来执行矢量绘图命令 1.使用 lineStyle() 定义画图的线条样式 2.moveTo() - 设置当前绘画点:lineTo() - 以当前绘画点为起点,用当前 定义的线条样式,画一条直线到目标点:curveTo() - 指定二次贝塞尔曲线的控 制点和终点,从而完成曲线的绘制:drawRect() - 绘制