2

当用户按住手指时,我有一个动作,但是当用户按住手指时,我如何连续执行此动作?例如我想: moveRight += 10; 当用户在屏幕右侧按住手指时连续。有谁知道如何在 XNA 中做到这一点?

4

2 回答 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 速度)

查看Windows Phone 手势支持的文档

也许您要处理的“发布”事件就是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 回答