2016-06-04 3 views
0

Я пытаюсь создать состояние загрузки в начале игры с информацией о компании, когда она загружает некоторые файлы. Проблема в том, что я использую сон на нем. Он не будет рисовать фон. Если я использую wait, он возвращает ошибку, потому что ему требуется objeft. Есть простой способ сделать это? Нарисуйте фон, используя команду спрайта, а затем подождите, прежде чем нажать новое состояние? ThanxОжидание перед нажатием другого состояния ... Wait()

@Override 
public void render(SpriteBatch sb) { 


    sb.begin(); 

    Object obj = new Object(); 

    sb.draw(bk, 0, 0, 56, 56); 
    try { 

     TimeUnit.SECONDS.sleep(5); 
     gsm.push(new MenuState(gsm)); 
     dispose(); 

    } catch (Exception e) { 
     System.out.println("error"); 
    } 


    sb.end(); 

Я также попытался это:

TimeUnit.SECONDS.wait(obj, 5); 
TimeUnit.SECONDS.timedwait(5); 
wait(); 
Thread.Sleep(); 

//all in try catch block 

Я также пытался отделить в своем собственном потоке и не удалось. Должен быть простой способ сделать это нет?

+0

В общем случае нить визуализации не должна прерываться. Логика изменения состояния должна идти любым способом, вызывающим вызов 'render'. – Paul

+0

Я пробовал это. Я просто хотел показать весь код в одном месте. Должен быть простой способ ждать? – Joe

ответ

0
public void timer(){ 

     try { 
      TimeUnit.SECONDS.sleep(3); 

     } catch (Exception e) { 
      System.out.println("error"); 
     } 

} 


@Override 
protected void handleInput() { 

    if (load) 
    { 
    timer(); 
    gsm.push(new MenuState(gsm)); 
    dispose(); 
    } 
} 

@Override 
public void update(float dt) { 
    handleInput(); 
    load = true; 
} 
Смежные вопросы