Я очень расстроен, потому что я использовал знания, полученные из книги по Java, чтобы настроить и нарисовать JFrame для своей программы, но, похоже, никто во вселенной не настраивает его так же, как единственныйСпособ исправить это будет большим количеством перекодирования.Так что помогите!
У меня ужасное мерцание изображения с моей программой.Я понятия не имею, как от этого избавиться.Я знаю, как удвоить буферизацию апплета, но это не апплет, поэтому он мне не помогает.У меня есть один «набор» изображений, который никогда не меняется (P1_xxx), а затем у меня есть «Фон» (не уверен, что это правильная терминология) изображение, которое изменяется при изменении других переменных.А именно, когда игрок заканчивает круги.Они оба мерцают.Много.Вот код.
Все, что я прочитал, почти отвечает на мой вопрос, но предназначено для установки JFrame другим способом, внутри JPanel или чего-то еще.
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Game extends JFrame {
//all images
URL url1=null, url2=null, url3=null, url4=null, urlhome1=null;
Image img1,img2,img3,img4,home1;
//screen width
final int WIDTH = 1080, HEIGHT = 726;
//car
Rectangle p1 = new Rectangle(390,620,WIDTH/35,WIDTH/35);
//constructor
public Game() {
//create the JFrame
super("Racer Doom Squared");
setSize(WIDTH,HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
//load the urls
try {
url1 = this.getClass().getResource("Images/P1_Up.png");
url2 = this.getClass().getResource("Images/P1_Right.png");
url3 = this.getClass().getResource("Images/P1_Down.png");
url4 = this.getClass().getResource("Images/P1_Left.png");
urlhome1 = this.getClass().getResource("Images/Home1.png");
}
catch(Exception e){}
//attach URLs to Images
img1 = Toolkit.getDefaultToolkit().getImage(url1);
img2 = Toolkit.getDefaultToolkit().getImage(url2);
img3 = Toolkit.getDefaultToolkit().getImage(url3);
img4 = Toolkit.getDefaultToolkit().getImage(url4);
home1 = Toolkit.getDefaultToolkit().getImage(urlhome1);
public void paint(Graphics g){
super.paint(g);
if(p1Laps==0) {
//home1
g.drawImage(home1,0,0,WIDTH,HEIGHT,this);
}
int scale = (WIDTH/HEIGHT)*3;
//Up
int p1width1 = img1.getWidth(this);
int p1height1 = img1.getHeight(this);
int w1 = scale*p1width1;
int h1 = scale*p1height1;
//Right
int p1width2 = img2.getWidth(this);
int p1height2 = img2.getHeight(this);
int w2 = scale*p1width2;
int h2 = scale*p1height2;
//Down
int p1width3 = img3.getWidth(this);
int p1height3 = img3.getHeight(this);
int w3 = scale*p1width3;
int h3 = scale*p1height3;
//Left
int p1width4 = img4.getWidth(this);
int p1height4 = img4.getHeight(this);
int w4 = scale*p1width4;
int h4 = scale*p1height4;
if(p1Direction==UP) {
g.drawImage(img1,p1.x,p1.y,(int)w1,(int)h1,this);
}
if(p1Direction==RIGHT) {
g.drawImage(img2,p1.x,p1.y,(int)w2,(int)h2,this);
}
if(p1Direction==DOWN) {
g.drawImage(img3,p1.x,p1.y,(int)w3,(int)h3,this);
}
if(p1Direction==LEFT) {
g.drawImage(img4,p1.x,p1.y,(int)w4,(int)h4,this);
}
}