Windows Phone 7 开发探索笔记4——触控操作之XNA中的Gesture
上篇文章介绍了Silverlight for Windows Phone Toolkit中的的GestureListener对象,本文将介绍XNA中与手势相关的内容。
一.添加XNA程序集
XNA是微软提供的专门用于游戏开发的框架,同时也支持Windows Phone 7。当然本文不打算介绍XNA开发的内容。所以我在Silverlight for Windows Phone程序中调用了相关的XNA程序集。
首先,我们要在项目中添加引用,如下图:
注意在点击OK时,会弹出如下所示的对话框:
选择“是”即可。然后在Code-Behind文件中添加下面的名称空间即可:
二.TouchPanel类
在XNA中,TouchPanel可以向我们提供大量关于触控操作的信息,我在页面的构造函数中用下面的代码查看了TouchPanel提供的一些信息:
Debug.WriteLine("Touch panel is available : " + tpc.IsConnected.ToString());
Debug.WriteLine("MaximumTouchCount: " + tpc.MaximumTouchCount.ToString() + "\n");
输出如下:
下面来介绍与手势相关的操作。在本文中我仍旧使用了上篇文章那个程序的UI,来看一下程序的Logic Tree和效果图:
三.TouchPanel中与手势相关的操作
如果想要通过TouchPanel在程序中对手势进行识别,首先要对TouchPanel的EnabledGestures属性赋值,EnabledGestures的类型是GestureType枚举,包括以下成员(即XNA所能识别的手势):
- Tap
- DoubleTap
- Hold
- Flick
- Pinch
- PinchComplete
- FreeDrag
- HorizontalDrag
- VerticalDrag]
- DragComplete
- None
它们被定义为位标记(bit flags),所以我们可以通过位或操作符(|)将它们组合,就像下面这样:
GestureType.FreeDrag | GestureType.HorizontalDrag | GestureType.VerticalDrag;
注意:如果没有对TouchPanel.EnabledGestures属性赋值,那么在程序运行有关手势的代码时会抛出InvalidOperationException异常,如下所示:
我在矩形元素的ManipulationCompleted事件处理程序中添加了对手势的识别,完整代码如下:
{
while (TouchPanel.IsGestureAvailable)
{
GestureSample gs = TouchPanel.ReadGesture();
switch (gs.GestureType)
{
case GestureType.Tap:
if (e.OriginalSource == rectangle)
{
rectangle.Fill = new SolidColorBrush(
补充:移动开发 , Windows Phone ,
- 更多wap疑问解答:
- 新人求助QPainter
- 为什么程序都退出了还可以收到推送?如果大多设备都可以推送那运营商怎么办?
- qt 4.7 sqlserver2000 存储过程调用
- 关于ANDROID4.0.1编译问题!
- Android FrameBuffer读屏幕30秒后mmap失败
- 联通粗定位用java程序如何来请求和接受数据
- 为什么QT运行Android平台的程序时,mouseMoveEvent事件响应的间隔时间很长??????????
- android与PC蓝牙通讯
- 指定大小的label 内容可变,如果内容超出label的宽度,将未能显示的部分显示在另一个label上
- Android调试
- android如何通过wifi连接无线打印机
- 运行程序,release目录下产生一个乱码文件夹
- 分享个某机构最新安卓资料,自己验证了
- service启动不起来,掉不了service connection
- 求助:QT5.0 没有QPrinter吗
部分文章来自网络,