当用户按住手指时,我有一个动作,但是当用户按住手指时,我如何连续执行此动作?例如我想: moveRight += 10; 当用户在屏幕右侧按住手指时连续。有谁知道如何在 XNA 中做到这一点?
问问题
930 次
2 回答
4
使用鼠标输入 API(在 WP7 上进行简单的单点触控输入),具体检查:
MouseState ms = Mouse.GetState();
if(ms.LeftButton == ButtonState.Pressed && ms.X > centerOfScreen)
{
DoSomething();
}
或者使用WP7 上的触摸输入 API :
TouchCollection touches = TouchPanel.GetState();
foreach(TouchLocation touch in touches)
{
if((touch.State == TouchLocationState.Pressed
|| touch.State == TouchLocationState.Moved)
&& touch.Position.X > centerOfScreen)
{
DoSomething();
break;
}
}
于 2011-07-05T02:12:35.600 回答
1
当他们松开手指时有动作吗?如果是这样,那么使用循环结构(游戏循环)并添加一些输入状态,而不仅仅是响应事件。
- 当您收到“hold”事件时,将该状态设置为“true”
- 当您收到表明“hold”事件结束的事件时,将其设置为“false”
- 检查循环中的布尔值,如果已设置,则增加 x 值(或 x 速度)
也许您要处理的“发布”事件就是ManipulationCompleted
事件。我不知道它是仅 Silverlight,还是 Silverlight 和 XNA,不过......
如果失败了,也许你可以处理较低级别的事件。
手势是整个运动集的抽象。API 旨在完成所有脏活,弄清楚发生了什么,并告诉你它确实发生了,而不是它是如何发生的。如果你想拥有比这更细粒度的控制,那么你需要一个更细粒度的 API。
请参阅:http: //msdn.microsoft.com/en-us/library/ff607287 (v=VS.95).aspx(可能是 Touch 类)。
于 2011-07-04T20:38:40.900 回答