Windows Phone 开发中重力感应的简单使用示例
现在智能手机的交互都是通过一个大屏幕,开发手机游戏或应用时,对程序的操作在某些情况下使用加速度感应器会提高用户体验。
WindowsPhone SDK 7.1也提供了加速度模拟器,可以更好地测试程序。
以下是在一个XNA程序中简单的使用加速度感应的方法:
使用加速度感应器需要先引入命名空间
1: using Microsoft.Devices.Sensors;
并给用来提供程序控制(操作)的类添加一个属性用来存放感应器实例
1: Accelerometer accelerometer;
同时,此例中,简单的将对手机重力的变化归结到 上下左右的四向操作中,所以这里添加四个类属性用来表示四个方向是否被触发
1: private static Boolean trunUp = false;
2: private static Boolean trunDown = false;
3: private static Boolean trunLeft = false;
4: private static Boolean trunRight = false;
然后在类的初始化函数(Initialize)中对Accelerometer进行初始化
1: //检测是否支持加速度感应(如果不支持这里简单做异常抛出来)
2: if (!Accelerometer.IsSupported)
3: {
4: // The device on which the application is running does not support
5: // the accelerometer sensor. Alert the user and disable the
6: // Start and Stop buttons.
7: throw new Exception("device does not support accelerometer");
8: }
9: //初始化accelerometer
10: if (accelerometer == null)
11: {
12: // Instantiate the Accelerometer.
13: accelerometer = new Accelerometer();
14: //设置感应器检测间隔 单位是毫秒 (The default value is 2 milliseconds.[MSDN])
15: accelerometer.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20);
16: //[个人理解] 添加监听事件的回调函数 (accelerometer_CurrentValueChanged),
17: // 即每次检测的到的结果交给此方法进行处理(本例中用来更新四个方向指示属性)
18: accelerometer.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<AccelerometerReading>>(accelerometer_CurrentValueChanged);
19: }
20: try
21: {
22: //开始感应器检测
23: accelerometer.Start();
24: }
25: catch (InvalidOperationException ex)
26: {
27: throw new Exception("unable to start accelerometer.", ex);
28: }
编写回调函数来处理感应器的变化(将变化对应到四个方向属性上。【注意!本例只考虑横屏情况,竖屏情况坐标系略有不同】)
1: void accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
2: {
3:
4: //将方向属性归位
5: trunUp = false;
6: trunDown = false;
7: trunLeft = false;
8: trunRight = false;
9:
10: //将重力感应器得到的数据映射到单位三维矢量上
11: // (得到的加速度方向矢量三维均是0--1的数值表示XYZ轴
相关新闻>>
- Windows Phone 7(WP7)开发 读取本地资源文件
- Windows Phone 7(WP7)开发 Loaded VS On
- Windows Phone 7(WP7)开发 PhoneTextBox的一个BUG需要注意
- Windows Phone 7 开发探索笔记3——触控操作之GestureListener
- Windows Phone 7 开发探索笔记4——触控操作之XNA中的Gesture
- Windows Phone 7 开发探索笔记5——页面间导航
- Windows Phone 7 开发探索笔记1——触控操作之Touch
- Windows Phone 7 开发探索笔记6——页面间传值
- Windows Phone 7 开发探索笔记2——触控操作之Manipulation
- Windows Phone 7 开发探索笔记7——加载XML文件
- 发表评论
-
- 最新评论 更多>>
您可能感兴趣的文章
- 小试Sketchflow for Windows Phone 7
- Windows Phone 实用开发技巧(11):让StackPanel中的
- Windows Phone实用开发技巧(1):保存图片及加载图片
- 白话算法(7) 生成全排列的几种思路(三) 临位对换法
- Windows Phone 7 开发探索笔记5——页面间导航
- Windows Phone 实用开发技巧(2):使用TombstoneHelp
- Windows Phone 7 开发之Microsoft.Phone.Tasks中
- Windows Phone 实用开发技巧(23):强制关闭SIP
- Pocket PC获取路径的六种方法
- Windows Phone 7 最新的开发工具库