Windows Phone 7 中TouchPanel的触控操作
2012-11-03 13:35
239 查看
Windows Phone 7 有四种用户交互的方式:
按键
触控
手势
外设(例如重力感应等)
通常来说Windows Phone 7的按键一般只支持Back按键(返回键)的可控操作,其他的两个是不受控的。
在XNA中会自动的生成这样一段代码,就是表示对Back按键的事件响应。
一、触控
触控最简单的方式就是直接触碰屏幕,Windows Phone 7最多支持4个触控点.
11在XNA中,需要先获得触控装置的状态,然后才能获得触控点的信息(比如触控ID,坐标信息等)。
取得触控信息的方法是由TouchPanel来控制的。通过是使用TouchPanel的GetState()可获得TouchCollection集合(由于支持至少4点的触控,所以取得是集合),集合中存放的是TouchLocation的结构,有三个成员:
ID:表示触控的代码,每一次触控都会有一个唯一的编号
Position:触控的位置
State:触控的状态
State有以下三种状态:
①Pressed.即当前用户触控的状态是按下(手指按在屏幕上).
②Moved.即当前用户触控的状态是移动(手指按在屏幕上并移动)
③Release.当手指从触摸屏上离开的时候
下面的一个例子可以获取State的三种状态。
首先我们声明一个String类型的全局变量TouchMessage
接着添加一个SpriteFont类型的全局变量,用来将spritefont资源加载到内容管道中,以便程序使用。
本文出自 “季默” 博客,请务必保留此出处http://potential.blog.51cto.com/6176930/1402581
按键
触控
手势
外设(例如重力感应等)
通常来说Windows Phone 7的按键一般只支持Back按键(返回键)的可控操作,其他的两个是不受控的。
在XNA中会自动的生成这样一段代码,就是表示对Back按键的事件响应。
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit();意思就是当Back按键被按下(Pressed)的时候,退出游戏。这个一般是比较简单的。
一、触控
触控最简单的方式就是直接触碰屏幕,Windows Phone 7最多支持4个触控点.
11在XNA中,需要先获得触控装置的状态,然后才能获得触控点的信息(比如触控ID,坐标信息等)。
取得触控信息的方法是由TouchPanel来控制的。通过是使用TouchPanel的GetState()可获得TouchCollection集合(由于支持至少4点的触控,所以取得是集合),集合中存放的是TouchLocation的结构,有三个成员:
ID:表示触控的代码,每一次触控都会有一个唯一的编号
Position:触控的位置
State:触控的状态
State有以下三种状态:
①Pressed.即当前用户触控的状态是按下(手指按在屏幕上).
②Moved.即当前用户触控的状态是移动(手指按在屏幕上并移动)
③Release.当手指从触摸屏上离开的时候
下面的一个例子可以获取State的三种状态。
首先我们声明一个String类型的全局变量TouchMessage
string TouchMessage="";然后添加一个SpriteFont文件,用于在屏幕上显示文本
接着添加一个SpriteFont类型的全局变量,用来将spritefont资源加载到内容管道中,以便程序使用。
SpriteFont spritefont;加载SpriteFont资源
spritefont = Content.Load<SpriteFont>(@"Fonts\SpriteFont");然后我们需要在Update中添加捕获TouchPanel状态的代码,通过TouchPanel的Getstate()方法实现。
protected override void Update(GameTime gameTime) { // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); // TODO: Add your update logic here TouchMessage=” ”; TouchCollection tc = TouchPanel.GetState(); //由于GetState获得是状态的集合,所以需要使用foreach取出其中的每个状态。 //通过tc.Count的属性,可以获得集合的数目 foreach (var location in tc) { TouchMessage + = string.Format(" ID:{0}\n Location:{1}\n Position:{2}\n tc.Count:{3}\r\n", location.Id, location.State, location.Position,tc.Count); } base.Update(gameTime); }然后在Draw方法中绘制出SpriteFont。
protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); // TODO: Add your drawing code here spriteBatch.DrawString(spritefont, TouchMessage, Vector2.Zero, Color.Black); spriteBatch.End(); base.Draw(gameTime); }当手触碰到屏幕时,第一个状态是Pressed,不过很快会变成Moved,当手放开时会出现Released状态,然后会显示没有信号,即TouchMessage内容为空,因为我们是用鼠标在模拟器上点击,只有一个点,当放开鼠标时,就会没有任何状态所以TouchMessage内容为空。
本文出自 “季默” 博客,请务必保留此出处http://potential.blog.51cto.com/6176930/1402581
相关文章推荐
- Windows Phone 7 开发探索笔记1——触控操作之Touch
- Windows Phone开发——触控操作之GestureListener
- Windows Phone 开发,关于 TouchPanel的问题
- Windows Phone 7 XNA触控操作之Gestures
- 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控
- WP7——触控操作Touch
- 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控
- EXT JS Grid checkbox GridPanel 中的批量操作
- 使用脚本操作UpdatePanel中控件的问题
- WinCE驱动之Touch Panel(开发详解)
- Sencha touch 开发系列:容器组件:tabpanel,carousels
- Windows Phone 7 电话本相关的操作
- Ext GridPanel加载完数据后进行操作示例代码
- kendo ui PanelBar menu jquery 操作
- Windows Server 2012 R2支持远程桌面的触控操作
- (Extjs)对于GridPanel的各种操作
- WPF Touch操作滚动条,Window弹跳
- Windows 8.1 应用开发 – 触控操作
- Android单点触控技术,对图片进行平移,缩放,旋转操作
- touch.js——常见应用操作