这似乎是一个非常愚蠢的问题,但我真的需要一个帮助,我正在制作一个任务,绘制一个背景透明渐变图像,然后在上面绘制一些对象,问题是我想要绘制这个图像一次但其他对象将被多次绘制以执行一些动画
代码如下,这是我想要运行一次的代码,我创建了一个boolen变量= false然后将其设置为true
public void drawLockLayer(Graphics g) {
try {
lock = Image.createImage(Paths.lock);
g.drawImage(lock, 0, 0, LGBMainMidlet.width, LGBMainMidlet.height);
System.out.println("After Draw Image");
drawOnce = true;
} catch (Exception ex) {
ex.printStackTrace();
}
}
其他代码如下
public void paint(Graphics g, Rectangle rect) {
synchronized (g) {
if (drawOnce == false) {
drawLockLayer(g);
}
}
pos = (int) ((System.currentTimeMillis() % 2700) / 300);
int i = 0;
g.setColor(bgColor);
g.fillRoundRect(startX, startY, width, height, 20, 20);
g.setColor(fgColor);
g.setFont(font);
g.drawString(loadMsg, startX + (spacing / 4), startY + (spacing / 4));
for (int y = 0; y < 3; y++) {
for (int x = 0; x < 3; x++) {
int thickness = 6;
if (i == pos) {
thickness = 14;
} else if (i == pos - 1) {
thickness = 10;
}
g.fillRect((startX + x * spacing - (thickness / 2)) + (width / 3), (startY + y * spacing - (thickness / 2)) + (height / 3), thickness, thickness);
i++;
}
}
}
它是输入方法,但它不是绘制背景图像,我想要做的是锁定图形对象,直到他完成绘制图像,然后继续其他代码
任何人都可以帮忙吗
答案 0 :(得分:2)
代码有几个问题:
答案 1 :(得分:-1)
在调用paint之前,您需要将drawOnce设置为false。
看起来您的代码基于GameCanvas。您如何看待以下方法?
class MainCanvas extends GameCanvas { // rect is an attribute private void updateScreen() { drawOnce = false; paint(getGraphics(), rect); } public void start() { new DataThread().start(); new AnimationThread().start(); } class DataThread extends Thread { public void run() { while (/*IO stuff not done*/) { // save data updateScreen(); } } } class AnimationThread extends Thread { public void run() { while (/*IO stuff not done*/) { // sleep a little updateScreen(); } } } // drawLockLayer and paint(Graphics, Rectangle) methods } // end of MainCanvas class