2016-03-17 89 views
0

我有一款用LibGDX製作的遊戲,我沒有在遊戲中實現scene2d或者stage或actors,但現在需要滾動窗格。我見過的每個例子都使用舞臺和角色來繪製滾動窗格,是否可以使用批處理器或其他方法繪製它?像這樣:LibGDX Draw Scrollpane WITHOUT Stage

batcher.draw(scrollpane); 

而不是創造一個我根本沒有做過的整個舞臺。

回答

1

每個演員都有一個繪畫和動作的功能,當你將他們附加到一個舞臺上時,這些舞臺就會被調用。所以你需要做的就是打電話自己畫。既然你想與一個滾動窗格進行交互,你還需要調用它。它還需要一個GestureListener,所以你可以滾動它,並可能更多的東西,否則舞臺將處理。

scrollpane.act(deltaTime); 
scrollpane.draw(spriteBatch, alpha); 

我真的不知道爲什麼你不想要的舞臺。 Stage爲您提供了大量的功能和可擴展性。是的,只有一個滾動窗格,整個舞臺可能會過度殺傷,但它不會佔用您的資源。你也需要演員來填充這個滾動窗格(你也想自己處理這些)?我真的找不到離開舞臺的理由,這只是幾行代碼。

既然你對學習舞臺在這裏的工作方式猶豫不決,可能會幫助你,因爲對Stage的基本用法知之甚少。

Stage stage = new Stage(); 

stage.act(); 
stage.draw(); 
//This is pretty much it, you can start adding actors to it now. 


Table myTable = new Table(); 
myTable.setFillParent = true; // <-- sets initial table to fill it's parent (in this case the stage) 
Scrollpane myScrollpane = new Scrollpane(); // <-- Add actors to hold by scrollpane 

myTable.add(myScrollpane); 
stage.addActor(myTable); 
stage.addActor(myTable); 

爲了能夠與舞臺進行交互,您需要將其設置爲輸入處理器。

Gdx.input.setInputProcessor(stage); 
//If you want multiple input processors you need to use a InputMultiplexer 

InputMultiplexer im = new InputMultiplexer(); 
im.addProcessor(stage); 
im.addProcessor(new GestureDetector(someScreen)); 
im.addProcessor(player.getInputProcessor); 
+0

非常感謝。我對執行一個舞臺猶豫不決的唯一原因是,這很簡單,這是我的第一場比賽,當我建立遊戲基礎時,我從來不知道scene2d。現在已經有相當長的一段路要走,我唯一擔心的是如果我想圍繞着繪製一個舞臺,我將不得不改變整個遊戲代碼的基礎。在看完你的答案後,似乎可能需要花時間重構代碼並在舞臺上繪製所有內容,但是是否可以僅在舞臺上繪製scrollpane並將所有其他內容保留原樣?再次感謝 – Xaoilin