【问题标题】:MonoDroid Capturing Mouse PositionsMonoDroid 捕捉鼠标位置
【发布时间】:2013-09-23 10:38:00
【问题描述】:

我目前正在帮助某人为游戏 FlyTrap 提供 XNA 到 Android 端口。您可以在此处查看游戏视频: http://www.youtube.com/watch?v=fhwCErELHoA

港口进展顺利,除了一件事。雇用我的那个人正在建造一台基于 cubieboard2 的街机,他的计划是连接两个街机操纵杆。显然,他的街机操纵杆模仿了 Android 上的鼠标。

计划是每帧捕获鼠标的位置,计算这一帧与前一帧之间的增量值,并使用该增量来指导玩家移动。问题是 Mouse.GetState 似乎不起作用。所以我想我将不得不在 Mono.Android 级别而不是 MonoGame 级别上工作。

长话短说,有人知道如何在 Android 中捕捉鼠标的位置吗?

安格斯

【问题讨论】:

    标签: android xamarin.android monogame


    【解决方案1】:

    在您的活动中实现OnTouchListener,并使用setOnTouchListener() 方法为您的视图设置监听器。

    现在您可以在 Activity 中覆盖 onTouch() 方法。

    @Override
    public boolean onTouch(View view, MotionEvent event) {
    
    int x = (int) event.getX();       
    int y = (int) event.getY();
    
    return false;
    }
    

    【讨论】:

    • 我这样做了,但这只会在我单击鼠标时触发一个事件。我实际上希望在移动鼠标时触发一个事件。所以我发现正确的使用方法是 View.OnGenericMotionListener。这意味着我将修改 AndroidGameWindow 以便它实现 View.OnGenericMotion 侦听器。问题是我找不到接口,我意识到一定是因为我是API8,当我需要至少API12时。那么我的下一个问题是,如何让 AndroidGameWindow 实现 View.OnGenericMotionListener?
    • 从 android 4.0 开始,您可以通过 View.setOnHooverListener() 接收鼠标悬停事件。在“悬停事件”部分检查developer.android.com/sdk/android-4.0.html
    【解决方案2】:

    我在这篇文章中问了两个问题。我将从更简单的开始。 “那么我的下一个问题是,如何让 AndroidGameWindow 实现 View.OnGenericMotionListener?”

    我正在做的项目是针对 Android API8,Views.OnGenericMotionListener 来自 Android API12。在 Xamarin Studio 中,我右键单击该项目,选择选项。

    • 在 Build --> General 我将目标框架设置为 Android API 12
    • 在 Build --> Android Application 我将最低 Android 版本和目标 Android 版本设置为 API 12。

    在Android.AndroidGameWindow文件的MonoGame项目中我添加了这两个方法

    public bool OnGenericMotion(View view, MotionEvent e)
    {
        return OnGenericMotionEvent(e);
    }
    
    public override bool OnGenericMotionEvent(MotionEvent e)
    {
        MousePosition.X = e.GetX();
        MousePosition.Y = e.GetY();
    
        return true;
    }
    

    我还修改了 AndroidGameWindow 类,使其实现接口 Android.Views.View.IOnGenericMotionListener

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多