我一直在关注一些Java游戏开发教程,我能够创建一个椭圆形的对象,可以随着我的键盘输入移动并创建边界,但是我试图用图像替换椭圆形但是由于某种原因它是没有出现,我很确定我选择的图像不大,它更像是一个小图标,并提前感谢。
package javagame;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class JavaGame extends JFrame{
int x,y;
private Graphics dbg;
private Image dbImage;
Font font = new Font("Arial" , Font.BOLD, 30);
Image face;
public class AL extends KeyAdapter{
public void keyPressed(KeyEvent e){
int KeyCode = e.getKeyCode();
if(KeyCode == e.VK_LEFT) {
if(x<=0)
x=0;
else
x -=15;
}
if(KeyCode == e.VK_DOWN) {
if(y>=480)
y=480;
else
y+=5;
}
if(KeyCode == e.VK_UP) {
if(y<=20)
y=20;
else
y-=5;
}
if(KeyCode == e.VK_RIGHT) {
if(x>=480)
x=480;
else
x+=5;
}
}
public void keyReleased(KeyEvent e){
}
}
public JavaGame() {
//game images
ImageIcon i = new ImageIcon("C:/Users/Sheref/Documents/NetBeansProjects/avaGame/src/javagame/type-of-solder-001-512.gif");
face = i.getImage();
//game properties
addKeyListener(new AL());
setTitle(" Strategy Game");
setSize(500,500);
setResizable(true);
setVisible(true);
setBackground(Color.CYAN);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
x = 20 ;
y = 30;
}
public void paint(Graphics g){
dbImage = createImage(getWidth() , getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage , 0 , 0 , this);
}
public void paintComponent(Graphics g)
{
g.setFont(font);
g.drawImage(face, x, y, this);
repaint();
}
public static void main(String[] args) {
new JavaGame();
}
}
答案 0 :(得分:0)
在paint
方法中,而不是
this.dbImage = this.createImage(this.getWidth(), this.getHeight());
放:
this.dbImage = this.createImage((int) this.getSize().getWidth(), (int) this.getSize().getHeight());