我找到了一種方法,但通過golly,它有點兒麻煩。它利用了lwjgl backend Mouse.isInsideWindow() method(感謝Khopa的鏈接)。
如果任何人的興趣,這裏是......
創建libgdx核心模塊的接口...
public interface MouseWindowQuery {
public boolean isMouseInsideWindow();
}
一個MouseWindowQuery字段添加到您的主AplicationListener類(這將是擴展遊戲了很多人的),並保存它什麼地方桌面模塊就可以實現界面如下類...
public class SampleApp extends Game
{
private MouseWindowQuery mouseWindowQuery;
public FirstLibgdxApp(MouseWindowQuery mouseWindowQuery) {
this.mouseWindowQuery= mouseWindowQuery;
}
...
}
現在...
public class MouseWindowQueryImpl implements MouseWindowQuery {
@Override
public boolean isMouseInsideWindow() {
return Mouse.isInsideWindow();
}
}
最後,在你的主ApplicationListener類從您的DesktopStarter類(一個與main
法)通過此。
現在您可以使用您希望傳入的實例。
如果您有其他模塊(例如Android),則必須傳遞null實現(即實現僅返回false的MouseWindowQuery)。
如果你想知道,爲了避免引入從核心到桌面的依賴性,接口和實現是必要的。
唷!我真的希望能幫助別人!
我不認爲這是完全可能的,因爲libgdx –
「僅限於Windows上的應用程序窗口(而不是Mac)」。你的意思是說,在你的Mac上,當你的鼠標在遊戲窗口之外,但窗口仍然聚焦時,你仍然使用上述函數獲得鼠標座標? – Crembo
@Crembo:是的。這正是我的意思。 –