2013-07-30 30 views
5

Rozwijam własny silnik gry o nazwie FGame, i mam ten graficzny błąd, który naprawdę mnie niepokoi i nie jestem pewien, gdzie leży problem. W przypadku grafiki używam niestandardowej klasy obrazu, która ma tablicę pikseli 2d do przechowywania swoich danych. Mam również klasę ekranową, która rozszerza klasę Image, a dane pikselowe ekranu są używane do rysowania do JFrame za pośrednictwem klasy java BufferedImage.Błąd silnika renderowania Java w pikselach

Jeśli rysuję obraz, a poruszam go po ekranie, pojawia się błąd graficzny, który zniekształca piksele w linii pionowej w określonych miejscach na ekranie.

Oto film pokazujący błąd, który próbuję opisać: http://www.youtube.com/watch?v=MnGCuHW5neI, a tutaj znajduje się link do kodu źródłowego: https://github.com/Frechetta/FGame.

+0

+1 dobrych źródeł śledztwa –

+0

Co masz na myśli zakłóca? – arynaq

+0

Gdy obraz porusza się w poziomie, piksele tego obrazu przecinające pewne punkty na osi X przesuwają się w górę lub w dół o jeden piksel, a następnie z powrotem, gdy znajdują się po drugiej stronie tego punktu. –

Odpowiedz

1

Dziękuję @arynaq i @Max za pomoc w rozwiązaniu mojego problemu. Opublikuję mój stary kod i nowy kod dla każdego, kto napotka na ten problem.

Old Kod:

frame = new JFrame(nameA); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setLayout(new BorderLayout()); 
frame.add(this, BorderLayout.CENTER); 
frame.pack(); 
frame.setResizable(false); 
frame.setLocationRelativeTo(null); 
frame.setVisible(true); 

Nowy kod:

frame = new JFrame(nameA); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setLayout(null); 
this.setSize(getPreferredSize()); 
frame.add(this); 
frame.pack(); 
frame.setSize(getPreferredSize()); 
frame.setResizable(false); 
frame.setLocationRelativeTo(null); 
frame.setVisible(true);