设为首页 收藏本站
查看: 1097|回复: 0

Windows Phone 7 中TouchPanel的触控操作

[复制链接]

尚未签到

发表于 2015-5-13 10:26:53 | 显示全部楼层 |阅读模式
  Windows Phone 7 有四种用户交互的方式:


  • 按键
  • 触控
  • 手势
  • 外设(例如重力感应等)
  通常来说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(@"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内容为空。
DSC0000.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-66534-1-1.html 上篇帖子: windows phone 7 31天学习笔记 29:动画 下篇帖子: Windows 7 升级之我见
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表