第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單擊按鈕時屏幕響應

單擊按鈕時屏幕響應

藍山帝景 2021-09-29 13:41:08
基本上,我有一個屏幕,其中有一個字符和一個按鈕。當我觸摸屏幕時字符跳躍(使用 Gdx.input.justTouched 實現(xiàn))。單擊按鈕時會打開 PauseMenu(按鈕是舞臺的演員,單擊是使用 button.addListener(new ChangeListener() {.... })實現(xiàn)的。我的 InputProcessor 設置在舞臺上Gdx.input.setInputProcessor(stage);問題是當單擊按鈕時,我的角色會跳躍(但他不應該)并打開暫停菜單。我正在搜索 InputMultiplexer 但這沒有用(或者我可能以錯誤的方式使用它)。感謝您的任何建議!
查看完整描述

1 回答

?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

您可以使用InputMultiplexer.


首先是如何InputMultiplexer工作。

在InputMultiplexer你可以做很多InputProcessors 和InputProcessor返回布爾值的方法。

這個布爾值表示事件是否被處理。

因此,如果該方法返回 false,InputMultiplexer則將事件交給下一個InputProcessor.

如果該方法返回 true,則事件已被處理并且該事件不會轉(zhuǎn)到下一個InputProcessor.


現(xiàn)在我們InputProcessor在這種情況下為我們的屏幕制作一個TestScreenInput:


public class TestScreenInput implements InputProcessor {


    @Override

    public boolean touchDown(int screenX, int screenY, int pointer, int button) {

        System.out.println("Touch down");

        character.jump();

        return true;

    }


    @Override

    ... //all other methods from InputProcessor

}

該touchDown方法返回 true,因此下一個 InputProcessor 將不會收到該touchDown事件


在我們的屏幕類(TestScreen)中,我們創(chuàng)建了我們的Stage:


public class TestScreen implements Screen {

    private Stage stage;


    @Override

    public void show() {

        stage = new Stage();

    }

}

現(xiàn)在我們將創(chuàng)建我們TextButton的ChangeListener.

問題是,我們怎么能說事件被處理了呢?

將ChangeListener::changed(ChangeEvent event, Actor actor)不返回一個布爾值。


當我們查看Stage類時,我們可以找到該touchDown方法并且該方法返回:


boolean handled = event.isHandled();

return handled;

event是一個 Type ofEvent和ChangeEventextendsEvent

在我們的changed(ChangeEvent event, Actor actor)方法中,我們有一個ChangeEvent. 所以我們所要做的就是設置這個事件處理。

在Event有一種方法:


public void handle () { handled = true;}


現(xiàn)在我們知道了創(chuàng)建我們的 Button 的一切:


TextButton button = new TextButton("Click", skin);

button.addListener(new ChangeListener() {

    @Override

    public void changed(ChangeEvent event, Actor actor) {

        System.out.println("Click Button");

        event.handle(); //set the event handled = true

    }

});


stage.addActor(button);

最后,我們創(chuàng)建我們的InputMultiplexer. 重要的是階段在我們之前,TestScreenInput因為TestScreenInput將標記touchDown為已處理并且stage永遠不會接收它們。


InputMultiplexer multiplexer = new InputMultiplexer();

multiplexer.addProcessor(stage);

multiplexer.addProcessor(new TestScreenInput());

Gdx.input.setInputProcessor(multiplexer);


查看完整回答
反對 回復 2021-09-29
  • 1 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號