【发布时间】:2015-06-04 18:36:34
【问题描述】:
当我使用此代码时,图像会绘制(来自我定义的 spritesheet 部分),但它会在前一个实例上重新绘制它。我需要“图像”来“移动”。我使用paint 方法,使用Graphics 来重绘在init() 方法中定义的精灵。我只是想创建一个“奴才”,一旦它被添加到程序中,它就会开始从屏幕左下角到右侧“行走”,它本身(没有用户操作移动它)。我目前可以让它只拍摄图像并将其“涂抹”在屏幕底部(它会不断地将其绘制在自身上)
(为简单起见删除了导入)
public class Main extends JFrame {
BufferedImage sprite;
int War_x = 10, War_y = 640, War_dx = 1;
public Main()
{
//(X,Y) ---- (LEFT,UP)
//Window theGUI = new Window();
//JFrame theGUI = new JFrame();
setSize(870,720);
setTitle("Game");
setBackground(Color.red);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
init();
}
public void init()
{
BufferedImageLoader loader = new BufferedImageLoader();
BufferedImage spriteSheet = null;
System.out.println("bruh");
try {
spriteSheet = loader.loadImage("warrior.png");
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
SpriteSheet ss = new SpriteSheet(spriteSheet);
sprite = ss.grabSprite(0,130,32,36);
}
@Override
public void paint(Graphics g){
g.drawImage(sprite, War_x, War_y,64, 64, null);
warrior start = new warrior();
start.start();
repaint();
}
public static void main(String[] args){
Main main = new Main();
}
public class warrior implements ActionListener{
public Timer T = new Timer(100, this);
public void start(){
T.start();
}
@Override
public void actionPerformed(ActionEvent e) {
War_x += War_dx;
}
}
}
【问题讨论】: