2013-09-23 294 views
0

我目前正在帮助某人使用XNA到Android端口进行游戏FlyTrap。你可以看看这里的游戏视频: http://www.youtube.com/watch?v=fhwCErELHoAMonoDroid捕捉鼠标位置

这个港口运行得很好,除了一件事。雇佣我的人正在建立一个基于立方体2的街机,他的计划是附加两个街机游戏杆。显然他在街机模拟鼠标的街机游戏杆。

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

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

在活动

安格斯

回答

-1

我在这篇文章中提出了两个问题。我会从容易的一开始。 “所以我的下一个问题是,我怎样才能让AndroidGameWindow实现View.OnGenericMotionListener?”

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

  • 在建设 - >一般我的目标框架设置为Android的API 12
  • 在建设 - > Android应用程序我设置了最低的Android版本和目标Android版本,以API 12

在Android.AndroidGameWindow我添加了这两种方法

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; 
} 

文件中的MonoGame项目,我还修改了AndroidGameWindow类,以便它实现界面Android.Views.View.IOnGenericMotionListener

2

mplement OnTouchListener和使用​​方法来为您查看监听器。

现在您可以覆盖活动中的onTouch()方法。

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

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

return false; 
} 
+0

我这样做了,但是这只会触发一个事件,当我点击一个鼠标。当我移动鼠标时,我实际上想要一个事件触发。所以我想出了正确的使用方法是View.OnGenericMotionListener。 这意味着我将修改AndroidGameWindow,以便它实现View.OnGenericMotion侦听器。问题是我找不到接口,我意识到它必须是因为我是API8,当我需要最少的API12。 所以我的下一个问题是,我怎样才能让AndroidGameWindow实现View.OnGenericMotionListener? –

+0

从android 4.0开始,您可以通过View.setOnHooverListener()接收鼠标悬停的事件。 检查http://developer.android.com/sdk/android-4.0.html 的“悬停事件”部分。 – Huzi