1
我目前正在嘗試渲染我用瓷磚使用Slick2D製作的瓷磚地圖,並且一切正常,直到我包括一個對象層在我的瓷磚地圖。我已經在互聯網上搜索了很多關於我的困境的答案,而且似乎大多數其他人都會遇到這個問題,因爲他們將對象的寬度和高度字符串留空。在多次查看我的.tmx文件之後,我確信所有的高度和寬度值都包含大於零的數字。錯誤:對於輸入字符串:「」當我添加對象層到我的瓷磚地圖
這裏是我的.tmx文件:
`<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="isometric" renderorder="right-down" width="45" height="45" tilewidth="64" tileheight="32" nextobjectid="331">
<tileset firstgid="1" name="grassland_tiles" tilewidth="64" tileheight="32" tilecount="672" columns="16">
<image source="../../../../../Downloads/grassland_tiles.png" trans="ffffff" width="1024" height="1344"/>
</tileset>
<layer name="Bottom" width="45" height="45">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+3DQQ0AAAwDoat/01OxHySsmqqqqqqqqqr6/gBaFaajpB8AAA==
</data>
</layer>
<layer name="Top" width="45" height="45">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+3DsQkAAAgDsL7t9y4FH3BMIAnAv2kAAAAAAADgLLnS8aKkHwAA
</data>
</layer>
<objectgroup name="Object Layer 1">
<object id="327" x="96" y="96" width="96" height="96"/>
<object id="328" x="468" y="1106"/>
<object id="329" x="141.333" y="125.333"/>
</objectgroup>
</map>
`
這是我收到的錯誤:
Mon Jun 13 22:21:27 EDT 2016 ERROR:For input string: ""
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.newdawn.slick.tiled.TiledMap$ObjectGroup.<init>(TiledMap.java:1008)
at org.newdawn.slick.tiled.TiledMap.load(TiledMap.java:688)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:106)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:90)
at GameClass.init(GameClass.java:27)
at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
at org.newdawn.slick.CanvasGameContainer$1.run(CanvasGameContainer.java:69)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Mon Jun 13 22:21:27 EDT 2016 ERROR:Failed to parse tilemap
org.newdawn.slick.SlickException: Failed to parse tilemap
at org.newdawn.slick.tiled.TiledMap.load(TiledMap.java:695)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:106)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:90)
at GameClass.init(GameClass.java:27)
at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
at org.newdawn.slick.CanvasGameContainer$1.run(CanvasGameContainer.java:69)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.newdawn.slick.tiled.TiledMap$ObjectGroup.<init>(TiledMap.java:1008)
at org.newdawn.slick.tiled.TiledMap.load(TiledMap.java:688)
... 19 more
Mon Jun 13 22:21:27 EDT 2016 INFO:Starting display 1920x1001
我將不勝感激,如果有人能指出任何我錯誤。我對Slick2D和瓷磚地圖頗爲陌生。
非常感謝您的回覆,@ThorbjørnLindeijer。我進入'.tmx'文件並添加了'width'和'height'屬性,並且我沒有收到任何更多錯誤。然而,Slick2D似乎沒有將我的對象圖層識別爲圖層。換句話說,其'getLayerCount()'方法不包含對象層,它的對象方法(例如'getObjectX()')全部返回'-1'。然而,我的瓷磚圖層沒有任何問題。對象圖層和圖塊圖層是否應該以不同的方式渲染?如果是這樣,我該如何渲染對象圖層?我非常感謝你的幫助! – Clausiel
我很抱歉,但我從來沒有使用Slick2D,所以我不能真正回答任何這些問題。但從寬度/高度屬性問題來看,Slick2D中的TMX支持已經過時了,例如(它通常是在對象層上渲染的唯一有趣的東西),它可能不知道tile對象。至於圖層數量,我猜Slick2D可能會分別計算圖塊圖層和對象圖層。 –