[英]LibGDX - Scene2D panning
您的問題是您將舞台與所有演員(小部件等)一起用作相機手勢動作的輸入處理器。 這意味着,只要您對屬於它的任何角色施加某種手勢,就會觸發。
解決方案是在當前階段僅針對攝像機手勢創建另一個階段 。 因此,您的代碼應如下所示:
//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.