У меня есть полностью рабочий проект для Приключенческой игры, но если я изменю плиточную карту (которую я создал с помощью Tiled), она генерирует исключение BufferOverflowException.
Exception in thread "LWJGL Application" java.nio.BufferOverflowException
at java.nio.DirectFloatBufferU.put(DirectFloatBufferU.java:363)
at com.badlogic.gdx.graphics.g2d.SpriteCache.add(SpriteCache.java:259)
at com.badlogic.gdx.maps.tiled.renderers.OrthoCachedTiledMapRenderer.renderTileLayer(OrthoCachedTiledMapRenderer.java:353)
at com.badlogic.gdx.maps.tiled.renderers.OrthoCachedTiledMapRenderer.render(OrthoCachedTiledMapRenderer.java:132)
at entities.TilemapActor.draw(TilemapActor.java:76)
at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:110)
at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:57)
at com.badlogic.gdx.scenes.scene2d.Stage.draw(Stage.java:128)
at screen.BaseScreen.render(BaseScreen.java:51)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Итак, вот ничья ()-Метод TilemapActor, где генерируется исключение:
public void draw(Batch batch, float parentAlpha) {
//adjust tiled camera to be stay in sync with the game camera
Camera mainCamera = getStage().getCamera();
tiledCamera.position.x = mainCamera.position.x;
tiledCamera.position.y = mainCamera.position.y;
tiledCamera.update();
tiledMapRenderer.setView(tiledCamera);
//ned to force the batch order otherwise it is batched and redered last
batch.end();
tiledMapRenderer.render();
batch.begin();
}
И, наконец, метод render () - Метод из класса BaseScreen:
public void render(float dt) {
uiStage.act(dt);
mainStage.act(dt);
update(dt);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
mainStage.draw();
uiStage.draw();
}
Моя мозаичная карта - 60 * 60плитки с размером плитки 16 * 16, поэтому вся карта имеет размер 960 * 960 пикселей.
Работающая карта имеет размер 40 * 40 плиток с размером плитки 32 * 32, так что это 1280 * 1280 пикселей.
Я не понимаю, почему работает большая карта, а маленькая - нет.Буду признателен за любую помощь.
С уважением
DKJ1337