我剛開始鑽研的Java ME的奇蹟,但試圖創建一個線程時已經變得沮喪......奇怪的錯誤ME
以下是編譯精美絕倫的代碼。但是,只要我在G600上安裝並運行它,就會彈出「Java遊戲錯誤」。
我將它放入jar文件並安裝它的方法很有效,因爲我創建了一個沒有線程的遊戲,並且工作正常。
import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
public class CanvasTest extends MIDlet {
Display display;
public CanvasTest() {
}
public void startApp() {
TestCanvas thecanvas = new TestCanvas();
display = Display.getDisplay(this);
display.setCurrent(thecanvas);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
}
class TestCanvas extends GameCanvas implements Runnable {
Font font;
int width;
int height;
boolean running = true;
public TestCanvas() {
super(false);
setFullScreenMode(true);
width = getWidth();
height = getHeight();
Thread thisThread = new Thread(this);
thisThread.start();
}
public void paint(Graphics g) {
Random rand = new Random();
g.setColor(rand.nextInt(255), rand.nextInt(255), rand.nextInt(255));
g.fillRect(0, 0, width, height);
}
public void run() {
while(running) {
paint(getGraphics());
flushGraphics();
try {
Thread.sleep(50);
}
catch(InterruptedException ex) {}
}
}
};
注:是的,這不是遊戲,它只是表明我面臨的問題。
在此先感謝!
建議並沒有改變結果,實際上這是我的第一種方法,並且發佈的代碼是一個嘗試在工作(對此感到遺憾) 。 我會回覆你的模擬器票價。 – Thomas
非常有趣 - 請在發佈更新時發佈。此外,您是否以某種方式測試/驗證確實發生了重新安裝?我的意思是,如果安裝更新版本時出現故障,那麼您觀察到的結果可能確實是以前的版本之一?我會用重新安裝和啓動「無線」版本(你提到的一個工作正常)來重新檢查,然後重新安裝最新的版本。或者更好,我會創建一個「啓動畫面」,首先顯示並顯示一些版本標識符。可能是一個帶有textfield和命令的簡單表單'Start' – gnat
嗯,這是令人尷尬的,我有一個坦白的說法:我喜歡做'手動'的方式 - 我正在使用編譯+添加到jar +調整jad, etc方法......結果是,在使用SDK時,在模擬器和手機中都可以很好地工作。 我的確打算髮現我的錯誤,如果我確實發現了什麼地方出了問題,我會回到這裏。 儘管如此,他還是首先提出了一個模擬器的建議,然後提供了一些有用的技巧。 – Thomas