Плиточная карта Java — Slick2D отображается, но не отображается

#java #lwjgl #slick2d #tiled

#java #lwjgl #slick2d #плиточная

Вопрос:

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

Класс MapRender:

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

 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;



    }

}
  

Цикл, вызывающий рендеринг в основном классе

 public static void main(String[] args) {



    while(true)
    {

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

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

Ответ №1:

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

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

Комментарии:

1. Большое вам спасибо, вы направили меня в правильном направлении, я переместил ее в функцию рендеринга BasicGame, и она сработала