Java — карта Slick2D TileD отображается, но не отображается

Я тестирую использование TileD с Slick2D в Java, но когда я пытаюсь импортировать карту и визуализировать ее, функция рендеринга работает гладко, но карта не отображается на моем экране. Мой плеер показывает, но не карту. Я новичок в java, так что извините мой грязный код.

Класс MapRender:

Функция render() вызывается в цикле после KeyListener, который вызывает функцию loadMap(), и «рендеринг» выводится на консоль, но карта никогда не отображается. Как я могу это исправить?

package com;

import org.newdawn.slick.SlickException;
import org.newdawn.slick.tiled.TiledMap;

public class MapRender {

    private TiledMap testMap;
    public boolean mapAdded = false;

    public MapRender() {

    }

    public void render() throws SlickException {

        if(mapAdded)
        {
            //Rendering map
            testMap.render(100,100,0,0,100,100);
            System.out.println("render");
        }

    }

    public void loadMap() throws SlickException {

        //Adding map
        testMap = new TiledMap("maps/testMap.tmx", false);
        mapAdded = true;



    }

}

Циклический вызов рендеринга в классе Main

public static void main(String[] args) {



    while(true)
    {

        try {
            mapRender.render();
        } catch (SlickException e1) {
            e1.printStackTrace();
        }
    }
}

Любая помощь будет оценена по достоинству!


person Flizzet    schedule 09.10.2016    source источник


Ответы (1)


Цикл, который вы закодировали в своей основной функции, не позволяет Slick2D запускать какой-либо собственный код для обновления изображения на экране. В результате ваша программа, вероятно, застряла, просто снова и снова отрисовывая карту в какой-то невидимый буфер.

Ознакомьтесь с примером "Hello World" на вики Slick2D о том, как реализовать основной цикл и добавить вызов рендеринга карты в его метод render.

person Thorbjørn Lindeijer    schedule 09.10.2016
comment
Большое спасибо, направил меня в правильном направлении, я переместил его в функцию рендеринга BasicGame, и это сработало. - person Flizzet; 09.10.2016