2013-06-02 2 views
0

Я пишу игру, и у меня есть функция, называемая generateWave(). Это порождает врагов, и он работает отлично, при вызове на своем собственном, но когда он вызывается после задержки с помощью:Почему таймер libGDX не работает с моим методом?

Timer.schedule(new Task(){ 
    @Override 
    public void run() { 
     generateWave(5); 
    } 
}, 1, 5); 

Все это называется, но ничего не визуализируется на экране. Я установил некоторые println, чтобы проверить, как далеко в коде, который ему удалось получить, и все это сделало работу после вызова, но результат, который я обычно получаю от вызова generateWave(), нигде не найден. Никаких спрайтов, несмотря на их создание и размещение.

Это файл, содержащий код: https://github.com/Vynlar/HorseInvaders/blob/master/HorseInvaders/src/me/vynlar/HorseInvaders/world/World.java

Спасибо за любые ответы.

ответ

2

Я проверил ваш код и нашел проблему. Вы добавляете врагов в список, но вы также должны добавить его на сцену:

for(Enemy enemy : world.getEnemies()) 
    { 
     stage.addActor(enemy); 
    } 

Это из вашего кода из show() метода (GameScreen.java, строка 58), этот метод «вызывается, когда этот экран становится текущим экран для игры ». Поэтому, если вы добавите своих врагов в список Enemy, вы также должны позвонить stage.addActor(), чтобы добавить их на уровень.

PS. Извините за мой английский. Надеюсь, это вам помогло. :)

+0

О, ничего себе. Я привык писать игры, где враги обрабатывают собственный рендеринг, поэтому мне удалось забыть о сцене. Огромное спасибо. – Vynlar

+0

Вы должны полностью проверить это как ответ – Lestat

Смежные вопросы