`
wgcode
  • 浏览: 602457 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

flash 游戏键盘控制

阅读更多

package com.game.keymanager {    

    import flash.display.Stage;    
    import flash.events.KeyboardEvent;    
    import flash.ui.Keyboard;    
    import flash.utils.Proxy;     
    import flash.utils.flash_proxy;    
 
 
    /**   
 
     * The KeyObject class recreates functionality of   

     * Key.isDown of ActionScript 1 and 2   
 
     *   

     * Usage:   
 
     * var key:KeyObject = new KeyObject(stage);   
 
     * if (key.isDown(key.LEFT)) { ... }   
 
 
     */   
 
    dynamic public class KeyObject extends Proxy {    
 
 
        private static var stage:Stage;    
        private static var keysDown:Object;  
 
        public function KeyObject(stage:Stage) {   
 
            construct(stage);    

        }    

 
        public function construct(stage:Stage):void {    
 
            KeyObject.stage = stage;    
 
            keysDown = new Object();    
 
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);    
 
            stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);    
 
 
        }              
 
 
        flash_proxy override function getProperty(name:*):* {    
 
 
            return (name in Keyboard) ? Keyboard 
[name] : -1;    
 
 
        }    
 
 
        public function isDown(keyCode:uint):Boolean {    
 
 
            return Boolean(keyCode in keysDown);    
 
 
        }    
 
 
        public function deconstruct():void {    
 
 
            stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);    
 
 
            stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased);    
 
 
            keysDown = new Object();    
 
 
            KeyObject.stage = null;    
 
 
        }    
 
 
        private function keyPressed(evt:KeyboardEvent):void {    

            keysDown 
[evt.keyCode] = true;    
 
 
        }               
 
 
        private function keyReleased(evt:KeyboardEvent):void {    

            delete keysDown 
[evt.keyCode];    
 
 
        }    
 
 
    }    
 
 
}   
 package com.game.keymanager {
     
    import flash.display.Stage; 
    import flash.events.KeyboardEvent; 
    import flash.ui.Keyboard; 
    import flash.utils.Proxy; 
    import flash.utils.flash_proxy; 
     
    /** 
     * The KeyObject class recreates functionality of 
     * Key.isDown of ActionScript 1 and 2 
     * 
     * Usage: 
     * var key:KeyObject = new KeyObject(stage); 
     * if (key.isDown(key.LEFT)) { ... } 
     */ 
    dynamic public class KeyObject extends Proxy { 
         
        private static var stage:Stage; 
        private static var keysDown:Object; 
         
        public function KeyObject(stage:Stage) { 
            construct(stage); 
        } 
         
        public function construct(stage:Stage):void { 
            KeyObject.stage = stage; 
            keysDown = new Object(); 
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); 
            stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); 
        } 
         
        flash_proxy override function getProperty(name:*):* { 
            return (name in Keyboard) ? Keyboard[name] : -1; 
        } 
         
        public function isDown(keyCode:uint):Boolean { 
            return Boolean(keyCode in keysDown); 
        } 
         
        public function deconstruct():void { 
            stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed); 
            stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased); 
            keysDown = new Object(); 
            KeyObject.stage = null; 
        } 
         
        private function keyPressed(evt:KeyboardEvent):void { 
            keysDown[evt.keyCode] = true; 
        } 
         
        private function keyReleased(evt:KeyboardEvent):void { 
            delete keysDown[evt.keyCode]; 
        } 
    } 
} 

 暂时不多写了,因为csdn博客出问题,经常写文章都出错。真郁闷,先发一个键盘控制的类。可以进行使用的,在网上看到的。有兴趣尝试一下。用法很简单

第二种方式:使用了一种比较简洁的方式,同样是收集网上一种写法,感觉这种做法也是可以

使用的方法 使用 if(KEY.isDown(键值))这样就可以实现控制到我们希望的对象了。

package com.hero.ImageManager    
 
 
{    
 
 
    /*键盘按键判断类.   
 
 
    使用时先初始化要监听的对象.再判断哪个键被按下了.   
 
 
    KEY.init(stage);   
 
 
    KEY.isDown(40);返回true或false   
 
 
    */   
 
 
    import flash.events.Event;    
 
 
    import flash.events.KeyboardEvent;    
 
 
    import flash.display.DisplayObject;    
 
 
    public class KEY {    
 
 
        private static  var keyObj:KEY = null;    
 
 
        private static  var keys:Object;    
 
 
        public static function init(_stage:DisplayObject):void {    
 
 
            if (keyObj == null) {    
 
 
                keys = {};    
 
 
                _stage.addEventListener(KeyboardEvent.KEY_DOWN, KEY.keyDownHandler);    
 
 
                _stage.addEventListener(KeyboardEvent.KEY_UP, KEY.keyUpHandler);    
 
 
            }    
 
 
        }    
 
 
        public static function isDown( keyCode:uint ):Boolean {    
 
 
            return keys 
[keyCode];           
 
 
        }    
 
 
        private static function keyDownHandler( e:KeyboardEvent ):void {    
 
 
            keys 
[e.keyCode] = true;    
 
 
            trace( keys 
[e.keyCode]);    
 
 
        }    
 
 
        private static function keyUpHandler( e:KeyboardEvent ):void {    
 
            delete keys 
[e.keyCode];    
 
        }    
    }    
}   
 
 package com.hero.ImageManager
{ 
    /*键盘按键判断类. 
    使用时先初始化要监听的对象.再判断哪个键被按下了. 
    KEY.init(stage); 
    KEY.isDown(40);返回true或false 
    */ 
    import flash.events.Event; 
    import flash.events.KeyboardEvent; 
    import flash.display.DisplayObject; 
    public class KEY { 
        private static  var keyObj:KEY = null; 
        private static  var keys:Object; 
        public static function init(_stage:DisplayObject):void { 
            if (keyObj == null) { 
                keys = {}; 
                _stage.addEventListener(KeyboardEvent.KEY_DOWN, KEY.keyDownHandler); 
                _stage.addEventListener(KeyboardEvent.KEY_UP, KEY.keyUpHandler); 
            } 
        } 
        public static function isDown( keyCode:uint ):Boolean { 
            return keys[keyCode]; 
              
        } 
        private static function keyDownHandler( e:KeyboardEvent ):void { 
            keys[e.keyCode] = true; 
            trace( keys[e.keyCode]); 
        } 
        private static function keyUpHandler( e:KeyboardEvent ):void { 
            delete keys[e.keyCode]; 
        } 
    } 
 
} 

 第三种是使用:开关式的判断

 private var Isleft:Boolean;
 private var Isright:Boolean;
 private var Isup:Boolean;
 private var Isdown:Boolean;

 stage.addEventListener(KeyboardEvent.KEY_DOWN,keydown);
stage.addEventListener(KeyboardEvent.KEY_UP,keyup);

 进行简单判定

private function keydown(event:Event):void   
 
        {    
 
            if (event.keyCode==Keyboard.UP)    
 
 
            {    
 
                Isup=true;    
 
            }    
 
 
            else if (event.keyCode==Keyboard.DOWN)    
 
 
            {    
 
                Isdown=true;    
            }    
 
 
            else if (event.keyCode==Keyboard.LEFT)    
 
 
            {    
 
                Isleft=true;    
 
            }    
 
 
            else if (event.keyCode==Keyboard.RIGHT)    
 
 
            {    
                Isright=true;                       
            }   
 
        }    
 
 
        private function keyup(event:Event):void   
 
 
        {    
 
            if (event.keyCode==Keyboard.UP)    
 
 
            {    
                Isup=false;    
 
            }    
 
 
            else if (event.keyCode==Keyboard.DOWN)    
 
 
            {    
 
                Isdown=false;    
 
            }    
 
 
            else if (event.keyCode==Keyboard.LEFT)    
 
 
            {    
 
                Isleft=false;    
 
 
            }    
 
 
            else if (event.keyCode==Keyboard.RIGHT)    
 
 
            {    
                Isright=false;    
            }    
 
 
        }   
 
 
private function keydown(event:Event):void 
        { 
            if (event.keyCode==Keyboard.UP) 
            { 
                Isup=true; 
            } 
            else if (event.keyCode==Keyboard.DOWN) 
            { 
                Isdown=true; 
            } 
            else if (event.keyCode==Keyboard.LEFT) 
            { 
 
                Isleft=true; 
            } 
            else if (event.keyCode==Keyboard.RIGHT) 
            { 
                Isright=true;                    
            } 
        } 
        private function keyup(event:Event):void 
        { 
 
            if (event.keyCode==Keyboard.UP) 
            { 
                Isup=false; 
 
            } 
            else if (event.keyCode==Keyboard.DOWN) 
            { 
                Isdown=false; 
            } 
            else if (event.keyCode==Keyboard.LEFT) 
            { 
 
                Isleft=false; 
            } 
            else if (event.keyCode==Keyboard.RIGHT) 
            { 
                Isright=false; 
 
            } 
        } 
 通过开关式的组合方式进行组合,这种也是一种常见的方式。


通过使用上面三种方式,我们可以简化我们在键盘上的控制。我个人还比较喜欢这三种方式。

通过上面的键盘控制,还可以配合到动画进行创作。

addEventListener(Event.ENTER_FRAME,GameLoop);

好,有兴趣可以把这些使用方式记录下来组合自己的键盘控制方式。

分享到:
评论

相关推荐

    flash中键盘控制人物的实现

    在Flash中,我们经常需要创建交互式动画,例如游戏,其中用户可以通过键盘控制角色的移动。这个场景描述的“flash中键盘控制人物的实现”是一个基础的编程实践,主要涉及AS2或AS3(ActionScript)语言,这是Flash...

    简单Flash游戏人物控制源码

    总的来说,这个"简单Flash游戏人物控制源码"涵盖了面向对象编程、键盘事件处理、游戏逻辑、边界管理以及动态速度变化等多个关键知识点。学习并理解这些内容对于想要进入游戏开发领域的开发者来说是非常有价值的。...

    flash游戏编程指南(全).rar

    《Flash游戏编程指南》是一本全面介绍如何使用Adobe Flash平台进行游戏开发的教程。这份压缩包包含了一本完整的PDF电子书,旨在引导读者从零基础开始,逐步掌握Flash游戏编程的各项技能。 Flash作为曾经风靡一时的...

    网络游戏-Flash游戏的控制方法.zip

    在这个名为“网络游戏-Flash游戏的控制方法.zip”的压缩包中,包含了一份PDF文档,即“Flash游戏的控制方法.pdf”,它可能详细介绍了如何在Flash平台上设计和实现游戏的交互与控制。 Flash游戏的控制方法通常涉及到...

    flash游戏制作步骤详细文档

    4. 不合适的游戏方向是需要键盘控制事件的游戏或只适合一个人单击的游戏。 5. 游戏扩展方向可以是漂亮的鼠标跟随事件画面,重点因素是画面美、跟随效果显著且美观有趣。 详细说明: 1. 游戏类型:Flash 游戏可以...

    flash游戏实例教程

    5. **交互与事件处理**:Flash游戏的核心在于用户交互,通过监听键盘或鼠标事件,你可以实现玩家控制游戏元素的功能。例如,通过ActionScript中的事件监听器,你可以实现球的移动和碰撞检测。 6. **资源管理**:...

    Flash游戏的fla

    标题中的“Flash游戏的fla”指的是基于Adobe Flash平台开发的游戏源文件,这些源文件的扩展名通常是“.fla”。FLA文件是Flash Authoring Environment(创作环境)使用的原始格式,其中包含了所有图形、动画、代码和...

    flash 3.0飞机 射击_flash3.0_flash3.0_flash游戏_

    通过以上分析,我们可以看出Flash 3.0飞机射击游戏的开发涉及了ActionScript的基础语法、对象创建、事件处理、动画控制等多个方面。对于初学者而言,这个项目既能够提供实际操作的机会,又能巩固理论知识。实践过程...

    二维 flash 游戏

    7. **用户输入处理**:Flash游戏能够响应键盘、鼠标或触摸屏等输入设备,实现玩家对游戏角色的控制。开发者需要编写事件监听器来捕捉并处理这些输入事件。 8. **音频集成**:游戏音效和背景音乐是提升游戏体验的...

    flash开发的赛车小游戏,经典的flash小游戏

    1. **赛车小游戏**:这类游戏通常包括简单的赛车赛道、各种车辆选择,以及通过键盘控制的驾驶体验。它们可能包含竞速、躲避障碍物、收集物品等基本元素,提供快速娱乐和即时满足感。 2. **flash小游戏开发**:这个...

    flash桌球小游戏

    6. **用户交互**:用户通过鼠标或键盘控制球杆,这一过程需要监听和响应用户的输入事件。ActionScript提供了丰富的事件处理机制,如`MouseEvent.CLICK` 用于识别鼠标点击。 7. **动画和帧率**:在Flash中,游戏的每...

    flash游戏中控制角色移动的源代码

    在Flash游戏开发中,角色移动是游戏交互的基础。本压缩包中的"characterControl"源代码提供了实现这一功能的关键逻辑,适用于AS3(ActionScript 3)编程环境,这是Flash Player支持的主要脚本语言。让我们深入探讨...

    接金币flash游戏源码

    【接金币flash游戏源码】是一款基于Flash技术开发的简单休闲游戏,玩家通过键盘操作下方的车辆接住从上方掉落的金币。游戏的核心玩法是利用玩家的反应速度和操作技巧来尽可能多地收集金币,增加了游戏的挑战性和趣味...

    Flash开车的游戏

    通过分析这些文件,我们可以了解到Flash游戏的基本结构和开发流程,以及如何通过键盘控制游戏元素。对于想要学习Flash游戏开发的人来说,这是一个很好的实践案例,可以从源码中学习到如何处理用户输入、实现游戏循环...

    flash游戏实例集

    【标题】"Flash游戏实例集"是一套专为初学者设计的教学资源,涵盖了经典的互动游戏类型,如推箱子、填色和找茬儿。通过这些实例,学习者可以深入理解Flash平台上的游戏开发,掌握ActionScript 3.0(AS3)编程语言的...

    收集的几个Flash小游戏源代码

    3. **事件处理**:在Flash游戏中,用户输入(如鼠标点击或键盘按键)通常触发游戏的响应。ActionScript中的`Event`类和`addEventListener()`方法是处理这些事件的关键。例如,打砖块游戏中,玩家的移动和击球动作都...

    flash接金币游戏--有源码解释

    今天我们要深入探讨的是一个经典的Flash小游戏——"接金币游戏",这款游戏中融入了丰富的编程技巧和设计理念,通过分析其源码,我们可以了解Flash游戏开发的基本原理和方法。 首先,"接金币游戏"是一款基于AS3...

    flash游戏简单打地鼠游戏

    1. **ActionScript 3.0编程**:AS3是Flash游戏的核心,它允许开发者创建动态内容,处理事件,控制时间轴,以及与用户进行交互。打地鼠游戏中的主要脚本可能会涉及定时器(Timer)来控制地鼠的随机出现,键盘监听...

    火柴人大战flash游戏源码

    火柴人大战是一款深受玩家喜爱的Flash游戏,其源码是开发者使用ActionScript语言编写的。ActionScript是Adobe Flash Professional和Flash Builder等工具用来创建交互式内容的主要编程语言,尤其在2D动画和游戏开发...

    flash 游戏开发

    1. MVC模式:Model-View-Controller模式在Flash游戏开发中常用于分离数据、表现和控制逻辑。 2. 单例模式:为全局唯一的游戏对象(如游戏管理器)提供实例化机制。 3. 组件化设计:将游戏元素拆分为可复用的组件,...

Global site tag (gtag.js) - Google Analytics