Я пишу небольшую игру, используя Апплет.Я хочу иметь возможность проверить цвет пикселя на экране.Однако, когда я использую .getRGB () для моего буферизованного изображения в игровом цикле (цикл while, который выполняется снова и снова), он дает мне непоследовательные значения, даже если цвет пикселя фактически никогда не изменяется!
Например,, если я заливаю изображение зеленым цветом и вызываю .getRGB () для пикселя в середине экрана, иногда он дает мне 0xFF00FF00 (зеленый) в качестве цвета, в других случаях он дает мне 0xFF000000 (черный), даже если цветвсегда остается зеленым!
Любая помощь?
Вот соответствующий код, если он помогает, я свел его к минимуму, просто чтобы сосредоточиться на проблеме:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
public class t extends Applet implements Runnable {
Graphics2D bufferG;
BufferedImage bufferI;
final int WIDTH = 500, HEIGHT = 500;
public void init() {
setSize(WIDTH, HEIGHT);
bufferI = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
bufferG = bufferI.createGraphics();
(new Thread(this)).start();
}
public void run() {
while (true){
if (bufferI.getRGB(WIDTH/2, HEIGHT/2)==0xFF000000) System.out.println("BLACK");
}
}
public void paint(Graphics g) {
bufferG.setColor(Color.green);
bufferG.fillRect(0, 0, WIDTH, HEIGHT);
g.drawImage(bufferI, 0, 0, this);
}
}