MonoDroid捕获鼠标位置

时间:2013-09-23 10:38:01

标签: android xamarin.android monogame

我正在帮助某人使用XNA到Android端口进行FlyTrap游戏。你可以在这里查看游戏视频: http://www.youtube.com/watch?v=fhwCErELHoA

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

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

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

安格斯

2 个答案:

答案 0 :(得分:2)

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

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

@Override
public boolean onTouch(View view, MotionEvent event) {

int x = (int) event.getX();       
int y = (int) event.getY();

return false;
}

答案 1 :(得分:-1)

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

我正在开发的项目是针对Android API8,Views.OnGenericMotionListener是在Android API12中出现的。在Xamarin Studio中,我右键单击了该项目,选择了Options。

  • 正在构建 - >一般我将目标框架设置为Android API 12
  • 正在构建 - > Android应用程序我将最低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接口