5设计支持手势操作的XNA游戏

5设计支持手势操作的XNA游戏

ID:40527350

大小:208.50 KB

页数:11页

时间:2019-08-04

5设计支持手势操作的XNA游戏_第1页
5设计支持手势操作的XNA游戏_第2页
5设计支持手势操作的XNA游戏_第3页
5设计支持手势操作的XNA游戏_第4页
5设计支持手势操作的XNA游戏_第5页
资源描述:

《5设计支持手势操作的XNA游戏》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、摘要上一回我们为大家介绍了更多的XNAFramework支持游戏开发的类别,包括支持输入控制,音效播放,以及背景音乐播放控制的类别等等,让读者能够为所制作的游戏程序加入更丰富的游戏效果。这一回我们将要为大家介绍进阶的输入控制技巧,让使用者可以利用WindowsPhone7智能型手机支持多点触控的触控屏幕控制游戏程序的执行。认识手势操作在上一回的介绍中,我们学会如何利用TouchPanel类别的GetState方法查询智能型手机的触摸屏的状态,并依据使用者触碰在触控屏幕的位置移动游戏程序显示的图形的位置。呼叫TouchPanel类别的GetState方法查询触控屏幕的状态并判断用户触碰触控

2、屏幕的位置只是最简单的触控屏幕控制技巧,除了支持取得触控屏幕的状态以外,触控屏幕还支持用户进行多种不同的控制,包括触碰、触碰不放、水平拖曳、垂直拖曳、自由拖曳、以及轻拂等操作。表1所示即为触控屏幕的各种状态的说明:表1:触控屏幕的各种状态的说明操作动作说明Tap触碰。触碰触控屏幕后放开,没有移动的动作。DoubleTap连续触碰。连续触碰同一个位置两次。Hold点住不放。触碰后不放达一段时间。VerticalDrag垂直拖曳。触碰屏幕后上下移动。HorizontalDrag水平拖曳。触碰屏幕后左右移动。FreeDrag自由拖曳。触碰屏幕后往任意方向移动DragComplete拖曳结束。F

3、lick轻拂。触碰屏幕后往任意方向拂动后离开屏幕。Pinch同时便用两个手指头触碰触控屏幕后移动。PinchCompletePinch操作结束。以XNA为基础的游戏程序可以利用表1所列的各种触控屏幕状态判断用户执行的触控操作种类,以反应使用者的触控操作。[注意]以XNA为基础的游戏程序必须启用触控功能才能够让游戏的使用者进行触控操作,如果已启用Pinch操作功能,则当用户利用两个手指头同时触碰触控屏幕并进行移动时,就会产生Pinch操作,而不是两个不同的拖曳操作,如果未启用Pinch操作功能,则所产生的就不是Pinch操作,而是依据两个触碰位置的平均为准的单一拖曳操作。启用手势操作支持以

4、XNA为基础的游戏程序必须设定TouchPanel类别的EnabledGestures属性,才能够启用手势操作功能,以支持用户以手势操作游戏程序。程序设计师可以在Game1类别的Initialize方法执行设定TouchPanel类别的EnabledGestures属性的动作,以启用手势操作支持,做法如下:TouchPanel.EnabledGestures=GestureType.Hold

5、GestureType.Tap

6、GestureType.DoubleTap

7、GestureType.FreeDrag

8、GestureType.Flick

9、GestureType.Pinch;[说明]

10、请注意在上述的程序中,GestureType.FreeDrag设定表示要支持使用者以自由拖曳的方式操作游戏程序,设定了GestureType.FreeDrag就已经涵盖GestureType.VerticalDrag设定和GestureType.HorizontalDrag设定。而DragComplete状态和PinchComplete状态代表触控动作结束的状态,不需要启用。[注意]以XNA为基础的游戏程序可以视需要启用需要使用的触控功能,例如只支持用户利用触控的方式选取菜单的游戏程序,就可以仅启用Tap和VerticalDrag两种触控功能,让用户以垂直拖曳的方式卷动游戏程序提供的菜单

11、,再触碰欲选择的菜单,其他不需要用到的触控控制功能就不需要启用,避免启用多种触控操作功能,造成判断触控操作动作的逻辑复杂,进而影响到触控的精确度和游戏程序执行的效能。处理使用者的手势操作启用了手势操作功能之后,以XNA为基础的应用程序可以在Game1类别的Update方法中呼叫TouchPanel类别的ReadGesture方法取得用户的手势操作信息。请注意读取使用者的手势操作的做法和呼叫TouchPanel类别的GetState方法读取触控面板的状态的做法不同,因为用户对游戏程序的触控操作会产生多个手势信息,来不及被游戏处理的手势信息会被存放到队列中等待处理,让游戏程序利用循环取出并加

12、以处理。以下的Update方法便会利用while循环,搭配TouchPanel类别的IsGestureAvailable属性判断是否还有用户触控操作产生的手势信息尚未被处理,如果尚有使用者触控操作产生的手势信息尚未被处理,则呼叫TouchPanel类别的ReadGesture方法读取手势信息,并加以处理:protectedoverridevoidUpdate(GameTimegameTime){…while(TouchPanel.I

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。