0

我在开发我的 Windows Phone 应用程序时遇到了麻烦。这是一个游戏,我正在使用 XNA。

这是导航页面之一:

导航页面

问题是左上角的“后退”按钮在此之前的页面上的同一位置。因此,当我点击后退按钮时,它不会将我引导至上一页,而是引导至第一页。(有时如果我点击速度足够快,它会引导我进入上一个)。由于它有时有效,我认为错误不是来自我的代码。我认为由于 back_button 在两个页面上都位于同一个位置,因此它更新得太快,并且“touch_event”可能停留的时间太长。我不知道如何解决这个问题。
我如何捕捉按钮点击:

TouchPanelCapabilities touchCap = TouchPanel.GetCapabilities();

if (touchCap.IsConnected)
{
    TouchCollection touches = TouchPanel.GetState();

    if (touches.Count >= 1)
    {
        Vector2 PositionTouch = touches[0].Position;
        return (Mouseclik((int)PositionTouch.X, (int)PositionTouch.Y));
    }
}

return (Screen.ChooseLevelScreen);
4

3 回答 3

1

你需要这样的东西:

if (touches.Count >= 1)
    if (touches[0].State == TouchLocationState.Released)
    {
        Vector2 PositionTouch = touches[0].Position;
        return (Mouseclik((int)PositionTouch.X, (int)PositionTouch.Y));
    }

通常,当您释放触摸时检测到轻击,而不是在您按下它时,这样您就可以确定您只检测到一次。

于 2013-11-06T13:01:17.750 回答
0

轮询您的手指何时释放而不是单击。这样,当您将手指从触摸按钮上移开时,它只会被注册一次,而不是您的手指仍然在按钮上的 x 次,并且执行了循环。

TouchLocationState.Released_

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.touch.touchlocationstate.aspx
于 2013-11-06T11:53:46.217 回答
0

你需要TouchLocationState.Released

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.touch.touchlocationstate.aspx

于 2013-11-06T13:03:44.610 回答