7
@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();
}

デスクトップ版を起動すると、次のようになります。

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)

this tutothis oneの両方を試しましたが、同じ行で同じエラーが発生しますmLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);

編集: .tmx ファイルのデータが Tiled Map Editor によって自動的にエンコードされていることに気付いたので、非アクティブ化しましたが、それでも同じエラーが発生します。このプロジェクト
をコピー/貼り付けすると (render() メソッドだけでなく、プロジェクト全体を意味します)、機能しますが、自分のプロジェクトに自分のマップをロードしようとするとクラッシュします...

render()その後、前に提供したリンクのように、作成TiledMapHelper class者が提供するものを使用してメソッドを簡素化することにしたので、render()現在のメソッドがあります。

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

まだcrashiiiiiiiiiiiiingg .....
atm私は本当に怒っているので、誰かが助けを提供してくれるなら、それは大歓迎です!

4

1 に答える 1

9

エラーの原因がわかりました:
1) 「packfile」内のすべてのタイルのインデックスは -1 でした
2) 「packfile」内のすべてのタイルは元のタイル ファイル名と同じ名前でしたが、同じ名前ではありませんでしたパックされたすべてのタイルを含む .png ファイル。

現在、私の画面は黒いので、タイルは描画されていないと思います(おそらく、パックファイル内のタイルにランダムなインデックスを付けたためです-修正済み、投稿の最後を参照してください)が、例外はスローされず、それがポイントです.

これらの間違いは、私が時間に勝つはずだったタイルをパックするために使用したプログラムによるものです笑。そのため、別のオプションを試すか、別のものを使用します。
そのプログラムが「TexturePacker GUI」v3.1.0だったことを知りたい場合。

エラーを回避するために使用すべき/使用しないオプションがわかっている場合は、お知らせください。

編集:タイルをパッキングするための便利で機能するツールを見つけました。ここにあります:http: //freigabe.philweb.de/bubblr/texturepacker_edited.jar(リンクは無効です。代わりにこれを使用してください=> http://bit.ly/ 1a831nvまたは別のパッキング ツール => http://bit.ly/1aLgAFt )

それを使用するには、cmd を開き、.jar ファイルをダウンロードしたディレクトリに移動してから、次のようにします。

//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

これが私が言及したdpkのチュートリアルです。ここからフォローしてください:http://dpk.net/2011/05/01/libgdx-box2d-tiled-maps-full-working-example-part-1/#p4

アプリケーションがクラッシュしないのに画面が黒い場合は、カメラのビューポートの幅と高さを増やしてください。

ハッピー マッピング :) !

于 2012-07-31T19:09:12.983 に答える