- 浏览: 602457 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
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);
好,有兴趣可以把这些使用方式记录下来组合自己的键盘控制方式。
发表评论
-
Shader Forge中文帮助手册
2017-11-23 20:38 765转自 : http://blog.csdn.net/bb245 ... -
DrawCall优化
2017-11-17 15:33 638DrawCall ... -
Unity性能优化之Draw Call
2017-11-17 15:33 981Unity性能优化之Draw Call U ... -
unity动画插件Hotween的使用
2015-02-13 11:09 1854Hotween与itween类似,也是一个插值插件,都是对位 ... -
A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)
2014-12-16 17:43 2155在Unity3d中,我们一般常用的寻路算法: 1.A ... -
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 704as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
30个实用的网页设计工具
2013-03-20 09:58 862作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 753Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 910因为工作内容的原因, ... -
保持一贯快乐,我所做的6件事
2012-10-11 09:21 771现在距离我首次决定要创建Buffer这个应用已经将近 ... -
经典RPG游戏的七个次重要要素
2012-03-15 10:27 1816除了本类游戏的标志性特性――竭力完善角色以外,角色扮演游戏类新 ... -
Boomzap一个虚拟游戏开发工作室的成功经验
2012-03-15 10:08 1084简介 Boomzap是一个完全 ... -
Camera和Viewport
2011-10-30 16:46 1150下面来学习OGRE 引擎中很重要的几个概念。 Camera ... -
firefox的缓存文件夹在哪里?
2011-10-28 14:37 2338firefox的缓存文件夹在哪里? 就像IE的C:\ ... -
免费资源教程整理
2011-02-12 18:42 1880各位,这是我整理的免费视频教程,每天都会有更新,还有电子书,也 ... -
改良程序的11技巧
2011-01-10 12:50 783有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重 ... -
数学公式汇总
2010-12-26 13:16 1504高等数学公式篇 ·平方关系: sin^2(α)+cos^2( ... -
创业心理素质测试
2010-12-25 16:32 1022创业成功的关键是…选 ... -
联合创始人应该明确的10个问题
2010-12-23 12:40 864很多如Apple, Microsoft, Go ... -
SCVNGR游戏开发“三十六计”(全)
2010-12-23 12:00 997随着《黑客帝国》、《盗梦空间》的陆续推出,我越来越分不清虚 ...
相关推荐
在Flash中,我们经常需要创建交互式动画,例如游戏,其中用户可以通过键盘控制角色的移动。这个场景描述的“flash中键盘控制人物的实现”是一个基础的编程实践,主要涉及AS2或AS3(ActionScript)语言,这是Flash...
总的来说,这个"简单Flash游戏人物控制源码"涵盖了面向对象编程、键盘事件处理、游戏逻辑、边界管理以及动态速度变化等多个关键知识点。学习并理解这些内容对于想要进入游戏开发领域的开发者来说是非常有价值的。...
《Flash游戏编程指南》是一本全面介绍如何使用Adobe Flash平台进行游戏开发的教程。这份压缩包包含了一本完整的PDF电子书,旨在引导读者从零基础开始,逐步掌握Flash游戏编程的各项技能。 Flash作为曾经风靡一时的...
在这个名为“网络游戏-Flash游戏的控制方法.zip”的压缩包中,包含了一份PDF文档,即“Flash游戏的控制方法.pdf”,它可能详细介绍了如何在Flash平台上设计和实现游戏的交互与控制。 Flash游戏的控制方法通常涉及到...
4. 不合适的游戏方向是需要键盘控制事件的游戏或只适合一个人单击的游戏。 5. 游戏扩展方向可以是漂亮的鼠标跟随事件画面,重点因素是画面美、跟随效果显著且美观有趣。 详细说明: 1. 游戏类型:Flash 游戏可以...
5. **交互与事件处理**:Flash游戏的核心在于用户交互,通过监听键盘或鼠标事件,你可以实现玩家控制游戏元素的功能。例如,通过ActionScript中的事件监听器,你可以实现球的移动和碰撞检测。 6. **资源管理**:...
标题中的“Flash游戏的fla”指的是基于Adobe Flash平台开发的游戏源文件,这些源文件的扩展名通常是“.fla”。FLA文件是Flash Authoring Environment(创作环境)使用的原始格式,其中包含了所有图形、动画、代码和...
通过以上分析,我们可以看出Flash 3.0飞机射击游戏的开发涉及了ActionScript的基础语法、对象创建、事件处理、动画控制等多个方面。对于初学者而言,这个项目既能够提供实际操作的机会,又能巩固理论知识。实践过程...
7. **用户输入处理**:Flash游戏能够响应键盘、鼠标或触摸屏等输入设备,实现玩家对游戏角色的控制。开发者需要编写事件监听器来捕捉并处理这些输入事件。 8. **音频集成**:游戏音效和背景音乐是提升游戏体验的...
1. **赛车小游戏**:这类游戏通常包括简单的赛车赛道、各种车辆选择,以及通过键盘控制的驾驶体验。它们可能包含竞速、躲避障碍物、收集物品等基本元素,提供快速娱乐和即时满足感。 2. **flash小游戏开发**:这个...
6. **用户交互**:用户通过鼠标或键盘控制球杆,这一过程需要监听和响应用户的输入事件。ActionScript提供了丰富的事件处理机制,如`MouseEvent.CLICK` 用于识别鼠标点击。 7. **动画和帧率**:在Flash中,游戏的每...
在Flash游戏开发中,角色移动是游戏交互的基础。本压缩包中的"characterControl"源代码提供了实现这一功能的关键逻辑,适用于AS3(ActionScript 3)编程环境,这是Flash Player支持的主要脚本语言。让我们深入探讨...
【接金币flash游戏源码】是一款基于Flash技术开发的简单休闲游戏,玩家通过键盘操作下方的车辆接住从上方掉落的金币。游戏的核心玩法是利用玩家的反应速度和操作技巧来尽可能多地收集金币,增加了游戏的挑战性和趣味...
通过分析这些文件,我们可以了解到Flash游戏的基本结构和开发流程,以及如何通过键盘控制游戏元素。对于想要学习Flash游戏开发的人来说,这是一个很好的实践案例,可以从源码中学习到如何处理用户输入、实现游戏循环...
【标题】"Flash游戏实例集"是一套专为初学者设计的教学资源,涵盖了经典的互动游戏类型,如推箱子、填色和找茬儿。通过这些实例,学习者可以深入理解Flash平台上的游戏开发,掌握ActionScript 3.0(AS3)编程语言的...
3. **事件处理**:在Flash游戏中,用户输入(如鼠标点击或键盘按键)通常触发游戏的响应。ActionScript中的`Event`类和`addEventListener()`方法是处理这些事件的关键。例如,打砖块游戏中,玩家的移动和击球动作都...
今天我们要深入探讨的是一个经典的Flash小游戏——"接金币游戏",这款游戏中融入了丰富的编程技巧和设计理念,通过分析其源码,我们可以了解Flash游戏开发的基本原理和方法。 首先,"接金币游戏"是一款基于AS3...
1. **ActionScript 3.0编程**:AS3是Flash游戏的核心,它允许开发者创建动态内容,处理事件,控制时间轴,以及与用户进行交互。打地鼠游戏中的主要脚本可能会涉及定时器(Timer)来控制地鼠的随机出现,键盘监听...
火柴人大战是一款深受玩家喜爱的Flash游戏,其源码是开发者使用ActionScript语言编写的。ActionScript是Adobe Flash Professional和Flash Builder等工具用来创建交互式内容的主要编程语言,尤其在2D动画和游戏开发...
1. MVC模式:Model-View-Controller模式在Flash游戏开发中常用于分离数据、表现和控制逻辑。 2. 单例模式:为全局唯一的游戏对象(如游戏管理器)提供实例化机制。 3. 组件化设计:将游戏元素拆分为可复用的组件,...