如何爲平鋪貼圖中的貼磚添加點擊偵聽器,以便在使用鼠標選擇貼磚時它會變得高亮?LibGDX:如何使拼貼地圖貼磚可點擊?
8
A
回答
16
這不是由libgDX直接支持的,因爲TiledMap的東西只用於渲染。
雖然你可以很容易地創建一個Stage
,它將充當你的TiledMap的某種疊加輸入層。只需爲每個與該圖塊位置大小相同的圖塊創建一個Actor
即可。然後,您可以向演員添加EventListener
,以便能夠識別點擊這些演員的內容。
那些演員應該保留對他們的「起源」的引用,即TiledMapTileLayer.Cell
。因此,在處理這些事件時,您可以隨時從演員回到單元格。
以下顯示瞭如何做到這一點:
該角色負責捕捉事件,並保持約瓷磚的信息它是基於:
public class TiledMapActor extends Actor {
private TiledMap tiledMap;
private TiledMapTileLayer tiledLayer;
private TiledMapTileLayer.Cell cell;
public TiledMapActor(TiledMap tiledMap, TiledMapTileLayer tiledLayer, TiledMapTileLayer.Cell cell) {
this.tiledMap = tiledMap;
this.tiledLayer = tiledLayer;
this.cell = cell;
}
}
這個小聽衆可以連接到這些演員之一,將做任何類型的邏輯:
public class TiledMapClickListener extends ClickListener {
private TiledMapActor actor;
public TiledMapClickListener(TiledMapActor actor) {
this.actor = actor;
}
@Override
public void clicked(InputEvent event, float x, float y) {
System.out.println(actor.cell + " has been clicked.");
}
}
下面的類實際上創建一個給定的地圖的演員,並將他們連接到l isteners:
public class TiledMapStage extends Stage {
private TiledMap tiledMap;
public TiledMapStage(TiledMap tiledMap) {
this.tiledMap = tiledMap;
for (MapLayer layer : tiledMap.getLayers()) {
TiledMapTileLayer tiledLayer = (TiledMapTileLayer)layer;
createActorsForLayer(tiledLayer);
}
}
private void createActorsForLayer(TiledMapTileLayer tiledLayer) {
for (int x = 0; x < tiledLayer.getWidth(); x++) {
for (int y = 0; y < tiledLayer.getHeight(); y++) {
TiledMapTileLayer.Cell cell = tiledLayer.getCell(x, y);
TiledMapActor actor = new TiledMapActor(tiledMap, tiledLayer, cell);
actor.setBounds(x * tiledLayer.getTileWidth(), y * tiledLayer.getTileHeight(), tiledLayer.getTileWidth(),
tiledLayer.getTileHeight());
addActor(actor);
EventListener eventListener = new TiledMapClickListener(actor);
actor.addListener(eventListener);
}
}
}
}
現在TiledMapStage
將爲你做所有的工作。所有你需要做的是以下幾點:
Stage stage = new TiledMapStage(tiledMap);
Gdx.input.setInputProcessor(stage);
而在渲染(......),你需要調用stage.act()
。請記住使用相同的Viewport
作爲渲染TiledMap的階段。否則,輸入和您的渲染地圖將不會對齊。
相關問題
- 1. 如何攻擊這個拼貼拼圖?
- 2. LibGDX拼貼:移動相機導致瓷磚結巴/模糊/波
- 3. 如何在android中創建可點擊的照片拼貼畫?
- 4. 地圖拼貼 - 什麼樣的投影?
- 5. 在Cocos2D中滾動拼貼地圖
- 6. 如何調整geom拼貼中的拼貼高度?
- 7. 谷歌地圖拼貼覆蓋 - 在調用拼貼時避免404錯誤?
- 8. 如何在opengl中拼貼
- 9. Android ::創建一個可點擊的拼貼畫?
- 10. libGDX在代碼中調整大小的瓷磚貼圖
- 11. 如何在BruTile/SharpMap中將地圖添加到拼貼圖層?
- 12. LibGdx - 當我點擊他時更改演員貼圖
- 13. HTML/Javascript拼貼圖片?
- 14. 的拼貼圖像的Android
- 15. 如何動畫TMX瓷磚貼圖中的單個瓷磚?
- 16. 使用owlcarousel滑動拼貼圖像
- 17. 我如何知道Google地圖是否開始加載拼貼?
- 18. LibGDX - 使用FBO進行紋理貼圖
- 19. Android版Google地圖v2地圖拼貼重疊
- 20. 算術級拼貼
- 21. 如何簡化在8拼圖中移動拼貼的代碼?
- 22. 使用Cocos2D可以實現動態瓷磚貼圖嗎?
- 23. 火花拼貼布局 - 從點
- 24. 是否可以在Windows應用商店應用中使用輔助拼貼圖的拼貼模板?
- 25. AS3用不同的瓷磚拼貼的背景
- 26. 如何使用ImageMagick蒙太奇拼貼三幅圖像?
- 27. 如何在MATLAB中創建拼貼?
- 28. 如何在WinJS中製作拼貼?
- 29. 如何在JES中創建拼貼畫
- 30. 如何使用圖像拼貼將地牢建築算法打印到jframe?
首先,您需要將鼠標屏幕座標轉換爲世界座標系座標。那裏有足夠的資源告訴你如何。然後,只要用戶點擊 - >檢查磁貼 - >運行代碼就可以做到這一點。 – Madmenyo