簡體   English   中英

LibGDX-Scene2D平移

[英]LibGDX - Scene2D panning

我最近一直在做一個項目,以做作業。
好吧,到這一點,我有一個Scene2D的Screen實現,我遇到的問題是我在窗口小部件上的觸摸事件沒有停止在窗口小部件上。
我的意思是,如果我彈出一個窗口並嘗試移動它,它也會觸發圖形上的平移,或者如果我移動一個滑塊,它也會平移相機。

這是我在GitHub上項目
我的事件是對核心類Pantalla配置, 在這里
提前致謝。

您的問題是您將舞台與所有演員(小部件等)一起用作相機手勢動作的輸入處理器。 這意味着,只要您對屬於它的任何角色施加某種手勢,就會觸發。

解決方案是在當前階段僅針對攝像機手勢創建另一個階段 因此,您的代碼應如下所示:

    //show method
    viewport = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    // Creamos el stage, el cual albergara los botones entre otras cosas
    stage = new Stage(viewport);

    cameraStage = new Stage(viewport); //I'm not super-sure if you can user viewport second time - if not create new one

    ...

    //render method
    stage.act();
    stage.draw(); 

    cameraStage.act();
    cameraStage.draw(); //cameraStage is drawn after stage so it will be over it!

    ...

然后,您應該將與攝像機手勢相關的所有偵聽器添加到cameraStage而不是stage中, 但是當然它的功能應該影響靜止演員的stage

好的,那么您有兩個階段,攝影機階段位於包含演員的階段,因此您可以觸摸任意位置,並且可以確定同時觸摸了兩個階段,現在要做的就是將這兩個階段都設置為輸入處理器actor階段,首先是攝影台,其次攝影台 ,您將確保首先進行演員舞台的活動。

您將需要InputMultiplexer來執行此操作。 代碼的主要方案是:

    InputMultiplexer inputMultiplexer = new InputMultiplexer();

    inputMultiplexer.addProcessor(stage);
    inputMultiplexer.addProcessor(cameraStage);

    Gdx.input.setInputProcessor(inputMultiplexer);

現在,首先處理窗口小部件事件。

如果某事行不通,請考慮一下在按下stade時從inputMultiplexer中刪除cameraStage,並在按下stade時再次添加它。


一個簡單的建議-特別是當您創建一個將來將共享的工具時,請在代碼中使用英文變量/方法/ etc的名稱-對於其他用戶而言,它將更加清楚

暫無
暫無

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

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