簡體   English   中英

有沒有一種干凈的方法可以使libgdx跨平台控件實現

[英]Is there a clean way to make a libgdx cross-platform controls implementation

我目前剛開始與Libgdx合作。 我到了要考慮跨平台(PC /手持式)問題的地步。 我似乎找不到解決的一個重要問題,它是:我不希望每個可控實體都是InputAdapter的擴展,然后包含if(PC){switch:case key:gainSpeed();。 } else if(掌上電腦){switch:case touch:gainSpeed();}

是否有實現某些東西的方法,以便實體僅接收與程序相關的用戶輸入含義?

抱歉,我的問題太含糊:'(

您應該看一下: 與平台特定代碼的接口

但是在您的情況下,您可能不會使用interface 基本思想是,在不同平台特定的項目中,您將實現一個InputAdapter ,例如DesktopController extends InputAdapter 然后,您可以將此InputAdapter提供給ApplicationListener 像這樣:

public class MyGame implements ApplicationListener {
    private final InputAdapter controller;

    public MyGame(InputAdapter controller) {
        this.controller = controller;
        // this controller can now be used
        // Gdx.input.setInputProcessor(controller);
    }

}

public static void main(String[] argv) {
    LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
    new LwjglApplication(new MyGame(new DesktopController()), config);
}

通常,Libgdx應用程序只處理所有輸入,而不用擔心它們在哪個設備上。 像這樣:

...

@Override
public boolean keyDown(int keycode) {
    if (keycode == Keys.RIGHT)
        increaseSpeed();
    return true;
}

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    increaseSpeed();
    return true;
}

這是使用基於事件的InputProcessor來處理輸入事件。

LibGDX確實將桌面鼠標事件映射到“觸摸”事件,因此您可以折疊PC / Android輸入處理的該部分,但是沒有通用的映射鍵盤鍵來映射觸摸事件或類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM