2010-06-04 4 views
0

В JGame предполагается, что метод setBGImage() изменит фоновое изображение. Это работает, когда я устанавливаю фоновое изображение в первый раз в начале инициализации. Однако, когда я называю тот же метод позже , измените фоновое изображение, он ничего не делает. Что я делаю не так?Изменение фонового изображения в JGame

Вот пример кода, чтобы показать вам, что я имею в виду:

import jgame.*; 
import jgame.platform.*; 

public class Test extends JGEngine{ 
    public static void main(String[] args) { 
     new Test(); 
    } 

    public Test(){ 
     super(); 
     initEngine(640,480); 
    } 

    public void initCanvas(){ 
     setCanvasSettings(10,6,64,80,null,JGColor.white,null); 
    } 

    public void initGame(){ 
     setFrameRate(35,2); 
     defineMedia("media.tbl"); 
     doTestBackground(); 
    } 

    /* Demonstrates the bug */ 
    void doTestBackground(){ 
     new Thread(new Runnable(){ 
      public void run(){ 

       setBGImage("bg1"); 

       /* If it's put here, then it works perfectly: 
        setBGImage("bg2"); */ 

       try{ 
        Thread.sleep(2000); 
       } 
       catch(Exception e){} 

       /* If it's put here it doesn't work! 
        The background SHOULD change here but it doesn't */ 
       setBGImage("bg2"); 

      } 
     }).start(); 
    } 
} 
+0

У нас нет возможности узнать, что вы делаете неправильно, если вы не указали нам какой-либо код. –

+0

Вы правы. Хотя я думал, что я довольно ясно понимаю, что было не так. – aplm

ответ

0

Возможно, вы работаете с проблемами, с помощью неправильно нить? Как правило, поток AWT используется для изменения компонентов (в структуре Swing).

Попробуйте использовать SwingUtilities.invokeLater(new Runnable() { public void run() { setBGImage("things");} });

+0

Нет, это не проблема. – aplm

1

FYI, это поведение setBGImage является ошибкой, которая была исправлена ​​в версии 3.4. Начиная с версии 3.4, setBGImage корректно обновляет экран.

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