当用户在XNA中按下手指时,如何继续执行操作

时间:2011-07-04 20:27:05

标签: windows-phone-7 xna gestures

我有一个动作,当用户按住他们的手指时,但如何在用户按下他的手指时继续执行此操作?例如,我想:moveRight + = 10;当用户将手指按在屏幕的右侧时,用户不断地进行操作。有谁知道如何在XNA中做到这一点?

2 个答案:

答案 0 :(得分:4)

使用mouse input API(在WP7上轻松实现单点触控输入),具体检查:

MouseState ms = Mouse.GetState();
if(ms.LeftButton == ButtonState.Pressed && ms.X > centerOfScreen)
{
    DoSomething();
}

或者在WP7上使用touch input 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;
    }
}

答案 1 :(得分:1)

他们释放手指时是否有动作?如果是这样,那么使用循环结构(游戏循环)并添加一些输入状态,而不是响应事件。

  • 当您收到“暂停”事件
  • 时,将该状态设置为“true”
  • 当您收到表明“暂停”事件结束的事件
  • 时,将其设置为“false”
  • 检查循环中的布尔值,如果设置了
  • ,则递增x值(或x速度)

查看The docs for Gesture Support for Windows Phone

您希望处理的“发布”事件可能是ManipulationCompleted事件。我不知道它是Silverlight还是Silverlight和XNA,但是......

如果失败了,也许你可以处理更低级别的事件。

手势是整套动作的抽象。 API旨在完成搞清楚发生了什么的所有肮脏工作,并告诉你发生了,而不是 发生了什么。如果你想要更精细的颗粒控制,那么你需要一个更细粒度的API。

请参阅:http://msdn.microsoft.com/en-us/library/ff607287(v=VS.95).aspx(可能是the Touch class)。