2015-04-01 26 views
1

我正在製作一個libgdx遊戲作爲練習。它非常簡單,就像「逃避」類遊戲。只需屏幕背景,一些項目和左/右箭頭。輸入 - 在LibGdx中的動作處理

由於libgdx使一切變得簡單,如果有一個簡單的處理操作的方法,我就會遊蕩。現在它只是一堆onClick()方法中的「if else」語句。現在它很好,但有數十個或一系列物品會被混淆,而且點擊時可能會有些滯後。

public void onClick(int scrX, int scrY){ 
    pX = (scrX/viewW)*WORLD_W; 
    pY = (scrY/viewH)*WORLD_H; 
    if (pX > 10 && pX < 20 && pY > 10 && pY < 20) { 
     if (stage.getInfo().getLeft() == true) { 
      Gdx.app.log("Click", "Left"); 
      stage = new StageGame(stage.getInfo().getLeftStage()); 
     } 
    } 
    else if(pX > 80 && pX < 90 && pY > 10 && pY < 20) { 
     if (stage.getInfo().getRight() == true) { 
      Gdx.app.log("Click", "Right"); 
      stage = new StageGame(stage.getInfo().getRightStage()); 
     } 
    } 
} 

我在考慮切換這裏,但我仍然必須使用一些條件。 其他想法是一個矩陣,可以說100x100。隨着每個階段它將被從文件中讀取。點擊x和y後,可以很容易地轉換爲網格值,並且會發生適當的操作。但是,這隻適用於靜態遊戲,並且不關心內存使用情況以及處理該矩陣。

我很舒服,這是所有錯誤,但我不能找到我不能命名的東西:P 幫助請幫助!

+0

如果您確定您將擁有完全MxN矩陣,則屏幕對象的矩陣不是一個壞主意。其他方式,也許是一個列表,使其更加靈活。實際列表清單。另外,我沒有使用它,但libGDX有一些地圖功能,所以檢查一下 - 也許你可以使用它。 – MilanG 2015-04-01 11:31:01

回答

0

我想你可以使用Libgdx Actors基礎設施(又名Scene2d)來幫助組織你的屏幕元素。演員可以在屏幕上擁有一個位置,並擁有自己的onClick處理程序。 Libgdx將負責確定哪個Actor已被點擊並將調用其處理程序。見When to use actors in libgdx? What are cons and pros?https://github.com/libgdx/libgdx/wiki/Scene2d

順便說一句,你真的不需要擔心點擊檢測的性能,除非你在屏幕上有1000個對象(然後你有其他問題)。在這一點上我會更加擔心代碼的可維護性和可調試性。