【问题标题】:Handle back button, in MonoGame on Android处理返回按钮,在 Android 上的 MonoGame 中
【发布时间】:2013-03-30 06:56:56
【问题描述】:

我在使用 MonoDroid 在 MonoGame 上开发的 Android 游戏中处理后退按钮时遇到问题。我无法捕捉返回按钮点击事件。

我试过了:

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
{
    LoadingScreen.Load(ScreenManager, true, null, new BackgroundScreen(),
                               new LevelSelectScreen());
}

在主要活动上

    public override bool OnKeyUp(Keycode keyCode, KeyEvent e)
    {
        if (keyCode == Keycode.Back)
        {
            ...
            return true;
        }

        return base.OnKeyDown(keyCode, e);
    }

    public override void OnBackPressed()
    {
        ...
        Toast.MakeText(this, keyCode + " key! + " + keyCode.ToString(), ToastLength.Short).Show();
    }

    public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
    {
        if (keyCode == Keycode.Back)
        {
            ...
            return true;
        }

        return base.OnKeyDown(keyCode, e);
    }

没有什么帮助,在 WP 第一个变体上完美运行

【问题讨论】:

  • 我无法捕捉返回按钮点击事件。
  • 据我所知 GamePad.GetState(PlayerIndex.One).Buttons.Back 是这样做的方法,所以也许还有其他问题?

标签: android mono xamarin.android back-button monogame


【解决方案1】:

是的! 我找到了解决方案: 当你打电话时

GamePad.GetState(PlayerIndex.One)

在 Android GamePadState 中清除

public static GamePadState GetState(PlayerIndex playerIndex)
{
    var instance = GamePad.Instance;
    var state = new GamePadState(new GamePadThumbSticks(), new GamePadTriggers(), new GamePadButtons((Buttons)instance._buttons), new GamePadDPad());
    instance.Reset(); // <- CLEAR BUTTONS
    return state;
}

所以,不要在 Android 中多次调用 GetState。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多