2012-07-31 4 views
6
@Override 
public void render(float delta) { 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    camera.update(); 
    sprite.setProjectionMatrix(camera.combined); 

    mLevel.getTiledMapRenderer().getProjectionMatrix().set(camera.combined); 
    Vector3 tmp = new Vector3(); 
    tmp.set(0, 0, 0); 
    camera.unproject(tmp); 
    mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight); 

    sprite.begin(); 
    ... 
    sprite.end(); 
} 

Hier ist, was ich bekomme, wenn die Desktop-Version starten:Libgdx - Anwendung stürzt ab, wenn Aufruf TiledMapRenderer.render()

Exception in thread "LWJGL Application" java.lang.IllegalArgumentException: Number of remaining buffer elements is 0, must be at least 1. Because at most 1 elements can be returned, a buffer with at least 1 elements is required, regardless of actual returned element count 
    at org.lwjgl.BufferChecks.throwBufferSizeException(BufferChecks.java:162) 
    at org.lwjgl.BufferChecks.checkBufferSize(BufferChecks.java:189) 
    at org.lwjgl.BufferChecks.checkBuffer(BufferChecks.java:230) 
    at org.lwjgl.opengl.GL15.glBufferData(GL15.java:141) 
    at com.badlogic.gdx.backends.lwjgl.LwjglGL20.glBufferData(LwjglGL20.java:93) 
    at com.badlogic.gdx.graphics.glutils.VertexBufferObject.bind(VertexBufferObject.java:208) 
    at com.badlogic.gdx.graphics.Mesh.bind(Mesh.java:268) 
    at com.badlogic.gdx.graphics.g2d.SpriteCache.begin(SpriteCache.java:868) 
    at com.badlogic.gdx.graphics.g2d.tiled.TileMapRenderer.render(TileMapRenderer.java:336) 
    at com.badlogic.gdx.graphics.g2d.tiled.TileMapRenderer.render(TileMapRenderer.java:286) 
    at com.crunsh.libgdx.screens.GameScreen.render(GameScreen.java:102) 
    at com.badlogic.gdx.Game.render(Game.java:46) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:202) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:131) 

Ich habe versucht, sowohl this tuto und this one, und ich bekomme den gleichen Fehler in der gleichen Zeile mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);.

EDIT: Ich habe gerade festgestellt, dass die Daten meiner .tmx-Datei wurde automatisch von Tiled Map Editor codiert, so dass ich es deaktiviert, aber immer noch den gleichen Fehler.
Wenn ich Kopieren/Einfügen this project (ich meine das ganze Projekt, nicht nur die render() Methode) es funktioniert, aber wenn ich versuche, meine eigene Karte in meinem eigenen Projekt zu laden, stürzt nur ...

So danach habe ich beschlossen, nur um zu tun, wie die Verbindung meiner render() Methode zur Vereinfachung habe ich vor und nach den TiledMapHelper class den Urheber verwenden, so dass es mein render() Methode jetzt:

mHelper.getCamera().update(); 
mHelper.render(); 

Noch crashiiiiiiiiiiiiiingg .....
Wenn jemand bitte helfen kann, wäre es gr Ich bin sehr dankbar, weil ich total verrückt bin!

+0

Ich habe eine ähnliche Ausnahme gesehen, wenn ich meine Netzdefinitionen durcheinander gebracht habe (entweder habe ich vergessen, die Vertices zu laden oder die Länge auf Null zu setzen). Es ist also höchstwahrscheinlich etwas falsch mit Ihrer Kachelkartendefinition. Überprüfen Sie, ob Größen-/Skalierungsanforderungen (wie Potenz 2 oder Minimum von X oder ähnlichem), die Sie nicht erfüllen, bestehen. –

+0

Danke für deine Antwort. Ich überprüfte einfach alles bei einer Zweierpotenz: das Darstellungsfeld der Kamera, die Größe jeder Kachel und die Größe meiner level.png, die alle Kacheln in einem Bild enthält. Nur die Kartengröße passte nicht, aber das Ändern hat mein Problem nicht gelöst. Wie auch immer, das Tutorial verwendet eine Karte von 60 * 15, so dass die Karte, die angezeigt wird, auch nicht. – Flawyte

Antwort

8

ich gefunden, was den Fehler verursacht:
1) alle Steine ​​in meinem „Packfile“ hatte -1 als Index
2) alle Fliesen in meinem „Packfile“ hatte den gleichen Namen wie die ursprüngliche Datei Fliese Name, aber nicht der gleiche Name wie die .png-Datei, die alle gepackten Kacheln enthält.

Zur Zeit meines Bildschirm schwarz ist, so glaube ich, kein Ziegel zeichnen ist (wahrscheinlich, weil ich gab zufälligen Indizes zu den Fliesen im Packfile - fixierten finden Sie am Ende des Pfostens) sind aber keine Ausnahmen geworfen und das ist die Punkt.

Diese Fehler sind auf das Programm zurückzuführen, das ich verwendet habe, um die Kacheln zu packen, die mich gewinnen sollte, lol. Also werde ich verschiedene Optionen ausprobieren oder etwas anderes verwenden.
Wenn Sie wissen möchten, das Programm war "TexturePacker GUI" v3.1.0.

Wenn Sie wissen, welche Optionen ich verwenden/nicht verwenden sollte, um Fehler zu vermeiden, lassen Sie es mich wissen.

EDIT: ein sehr nützlich gefunden und Arbeitsinstrument für die Verpackung Fliesen, hier ist sie: http://freigabe.philweb.de/bubblr/texturepacker_edited.jar (Link ist tot, diese benutzen stattdessen =>http://bit.ly/1a831nv oder ein anderes Werkzeug zum Packen =>http://bit.ly/1aLgAFt)

um es zu nutzen öffnen sie cmd ein und gehen sie zu dem Verzeichnis, in dem die .jar-Datei heruntergeladen und dann:

//You should create, in the same directory of the .jar file, two additionnal folders 
//Call the first folder 'input' and put in all your tiles (rename them "level_1.png", "level_..") 
//Call the 2nd folder 'output' and leave it empty 
//Then just type in the command prompt : java -jar nameOfDownloadedJarFile.jar input output level 
//Then rename the "input1.png" into "level.png", and "level.pack" into "level packfile" 
//Open "level packfile" with notepad and change "input1.png" into "level.png" 
//Then draw your map using "level.png" in TiledMapEditor 
//Then just follow dpk' tutorial for rendering the map and it should work 

hier Tutorial des dpk ich erwähnt, folgen sie einfach von hier: http://dpk.net/2011/05/01/libgdx-box2d-tiled-maps-full-working-example-part-1/#p4

Wenn die Anwendung nicht abstürzt, aber der Bildschirm schwarz ist, erhöhen Sie einfach die Breite des Ansichtsfensters der Kamera & Höhe.

Happy Mapping :)!

+0

vielen Dank, ich mache die gleichen Fehler –

+0

Ich habe auch die "TexturePacker GUI" und stieß auf das gleiche Problem. Danke für die Bereitstellung der Alternative! –

+0

@miNde Link ist tot – tsukimi