2016-10-09 9 views
0

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

MapRender класс:

Функция визуализации() вызывается в цикле после 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; 



    } 

} 

Loop вызова визуализации в главном классе

public static void main(String[] args) { 



    while(true) 
    { 

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

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

ответ

0

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

Оформить заявку the "Hello World" example on the Slick2D wiki о том, как реализовать цикл ядра, и добавить свой вызов рендеринга карты в свой метод render.

+1

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