请看这个代码,当我在诺基亚N97上运行它的运行非常慢,但我在三星corby上测试它运行真,我想如果我使用游戏画布问题解决。我该怎么做才能解决这个问题。
public class MIDPCanvas extends GameCanvas implements Runnable {
Graphics g;
Image img;
int x = getWidth() / 2;
Thread t = new Thread(this);
public MIDPCanvas() {
super(true);
try {
img = Image.createImage("/pic.jpg");
} catch (IOException ex) {
ex.printStackTrace();
}
g = getGraphics();
g.setColor(150, 230, 200);
g.fillRect(0, 0, getWidth(), getHeight());
t.start();
}
public void run() {
while (true) {
g.drawImage(img, x, getHeight() / 2, Graphics.VCENTER | Graphics.HCENTER);
x--;
flushGraphics();
}
}
}
谢谢
答案 0 :(得分:0)
由于run()
中有一个无限循环,我猜想Corby上while
循环块中的一个调用,或者该设备以某种方式限制了你的进程:
while (true) {
g.drawImage( ... );
x--;
flushGraphics();
}
答案 1 :(得分:0)
这是一种非常糟糕的动画制作方式。
如果必须使用无限循环方法,则在每次迭代时至少包含yield()
或Thread.sleep(100)
。但更好的方法是使用Display.callSerially()
。这将确保设备尽可能快地进行动画制作。
Google是您的朋友,可以解释有关如何使用此方法的所有信息。
就个人而言,在使用大量动画的高复杂度J2ME应用程序的多年中,我从未使用GameCanvas
- 始终Canvas
,覆盖paint()
方法并使用动画制作callSerially()
。
答案 2 :(得分:0)