幻世(OurDream)2D图形引擎使用教程9——处理操作输入(3)
声明:本教程版权归Lizcst Software Lab所有,欢迎转载,但是转载必须保留本段声明文字,并注明文章来源:http://blog.csdn.net/kflizcst
谢谢合作!
现在我们该学习如果检测按键操作并作出反馈了。在这里按键操作包括用户在鼠标上的按键操作,以及用户在键盘上的按键操作。这篇教程我们将一起介绍,因为幻世引擎中并不区分这两种不同设备上接收到的操作,而是将它们统一定义为按键操作,只需要通过一个函数,就可以完成所有按键类操作的事件的接收。
幻世引擎提供了KeyDown、KeyUp和GetTheKeyState函数来帮助开发者检测按键的状态,这些函数的区别在于:
KeyDown和KeyUp仅仅对按键的某个状态有反应,KeyDown仅检测按键的按下状态,对于放开状态,该函数不会有反馈;KeyUp则刚好相反,该函数对按键的放开有反应,而对于按下操作则不会响应。对于每次按键操作,KeyDown和KeyUp函数只会对其相应一次,如果按键持续某个状态(比如持续的按下或持续的放开),这两个函数是不会一直反馈的。GetTheKeyState函数于此就有所不同了,它也只检测按下操作,但是,对于持续的按下状态,该函数会一直响应,从而可以持续不断的反馈用户的操作事件。
[检测按键操作]
好了,介绍了这么多,现在开始动手编写代码啦。我们使用上一篇教程的代码。我们今天想要实现的功能时,当用户按下ESC键后,就退出幻世程序。之前我们都是通过鼠标点击窗口关闭来退出程序的,现在我们尝试下一种新的方式!
1、找到代码的“帧处理函数”部分,编写检测按键操作的代码。
代码的含义就是:当检测到用户按下ESC的时候,退出幻世程序。
2、好了,现在我们编译并运行一下。这里我就不截图演示了,因为也无法截图展示出效果来,各位可以下载教程所附代码,自行测试效果。
[继续]
前一篇教程我们说过,要对之前的演示程序做一些改进以便让效果看上去更好些,在这里我们就通过本教程讲解的知识,完善下设计。
1、我们打开教程8的演示代码,找到“帧处理函数”部分,然后作如下修改。
当我们按下键盘的B键时才将鼠标的指针设置到窗口右下角。相比之前的设计,这样可以避免鼠标被固定而无法被移动。
2、效果截图我也不提供了,各位请看教程附带的示例程序。
[完成]
我们现在已经学习了如何与用户进行交互的方法了,这样我们的幻世程序将会更加有趣了,下篇教程,我们将继续学习如何检测鼠标的按键操作。
[示例代码下载]
代码下载:http://kuai.xunlei.com/d/BiIvAJ2yT3iqUgQA929
幻世(OurDream)2D图形引擎使用教程9——处理操作输入(3)的更多相关文章
- 幻世(OurDream)2D图形引擎使用教程8——处理操作输入(2)
声明:本教程版权归Lizcst Software Lab所有,欢迎转载,但是转载必须保留本段声明文字,并注明文章来源:http://blog.csdn.net/kflizcst 谢谢合作! 今天的教程 ...
- 幻世(OurDream)2D图形引擎使用教程11——播放媒体文件(1)
声明:本教程版权归Lizcst Software Lab所有,欢迎转载,但是转载必须保留本段声明文字,并注明文章来源:http://blog.csdn.net/kflizcst 谢谢合作! 播放媒体是 ...
- 幻世(OurDream)2D图形引擎易语言汉化版更新提示
幻世引擎的易语言汉化专版到目前为止已经累积了多个BUG,其中多个BUG是影响引擎功能使用的问题,我将会在近期发布修复所有问题的更新版本(此更新版本同时也将会支持最新的对加入的粒子系统的支持),敬请各位 ...
- 幻世(OurDream)2D图形引擎大更新——炫丽粒子特效强势回归!
本次更新终于让各位期待已久的绚丽粒子系统特效强势回归到幻世当中了.凭借新引擎强大而又高效的绘图,新的粒子系统将比旧有版本(原Ycnd 2D)在性能上有极大幅度的增强,增幅超过十倍! 更强的性能!更好的 ...
- 幻世(OurDream)TM 2D图形引擎开通捐赠渠道
为了支持幻世(OurDream)TM 2D图形引擎更好的发展,同一时候也是为了给希望支持引擎发展的朋友一个安全快捷的渠道,Lizcst Software Lab于今日正式在官方旗舰店增设了一个捐赠捐款 ...
- Unity 2D游戏开发教程之精灵的死亡和重生
Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...
- Unity 2D游戏开发教程之摄像头追踪功能
Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...
- Unity 2D游戏开发教程之使用脚本实现游戏逻辑
Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...
- Unity 2D游戏开发教程之游戏精灵的开火状态
Unity 2D游戏开发教程之游戏精灵的开火状态 精灵的开火状态 “开火”就是发射子弹的意思,在战争类型的电影或者电视剧中,主角们就爱这么说!本节打算为精灵添加发射子弹的能力.因为本游戏在后面会引入敌 ...
随机推荐
- Spark Streaming连接TCP Socket
1.Spark Streaming是什么 Spark Streaming是在Spark上建立的可扩展的高吞吐量实时处理流数据的框架,数据可以是来自多种不同的源,例如kafka,Flume,Twitte ...
- poj 1850/poj 1496
http://poj.org/problem?id=1850 -----------------http://poj.org/problem?id=1496 两题解法类似..本题为组合数学的题,要求所 ...
- 转:用JS判断IE浏览器的版本(-- 很巧妙实用的方法)
~~在看到这篇文章之前如果让我来判断IE的版本,那么我基本上会用 navigator.userAgent去做字符串检索,现在觉得特性检测的确比较靠谱一点 今天一个项目中需要判断IE版本号,又因为 jQ ...
- hibernate的配置 1
hibernate 是一种ORM框架,是ORM框架中一个典范 ORM叫做对象关系映射 是面向对象语言和关系型数据库之间的映射关系 所以只有在面向对象语言或者关系型数据库没用的时候ORM才会消失 ORM ...
- 转:C++:从子类访问父类的私有函数
众所周知,c和c++的数组都是不安全的,因为无论c还是c++都不提供数组边界检查功能,这使得数组溢出成为可能.从某个意义上说,c和c++是一种缺少监督的语言,然而这也正是其魅力所在.c++给予程序员更 ...
- uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...
- OI不得不知的那些数学定理
Binomial theorem One can define\[{r \choose k}=\frac{r\,(r-1) \cdots (r-k+1)}{k!} =\frac{(r)_k}{k!}\ ...
- HDU 4734 F(x) 2013 ACM/ICPC 成都网络赛
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4734 数位DP. 用dp[i][j][k] 表示第i位用j时f(x)=k的时候的个数,然后需要预处理下小 ...
- C#实现时间戳转化
/// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <param name=”timeStamp”></para ...
- [置顶] 63行代码完美实现html5 贪吃蛇游戏
以前也很少关注html5,感觉选择html已经慢慢成为趋势,想了解下.就找了个游戏学习了,写完这个游戏感觉html5和js结合很紧密,如果js不是特别好.估计需要先补习下js,这个只是个人的建议,不一 ...