0

正如你已经知道的一切,我开始写关于太空的小游戏。

“不错的开始” - https://stackoverflow.com/questions/19818655/simulation-of-spaceplanets-and-stars :D

我写了一个小计划,第一点就是'随机生成星星。你可以说,更容易使用随机数。

Random random = new Random();
int x = random.nextInt(getWidth()*2);
int y = random.nextInt(getHeight()*2);
g.drawImage(Image,x,y,4,4,this);

但它不起作用(

它不工作,因为图片“跳”在屏幕上。

至于视频:https ://www.youtube.com/watch?v=EELo_-eh3fA

那么如何随机带星星呢?(星号是小图片或白色方块)这就是全部代码:

    import java.awt.Graphics;

    import javax.imageio.ImageIO;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import java.io.IOException;

    public class Game extends JComponent {

    public Game() {
     try {
       image  = ImageIO.read(getClass().getResource("star.png"));
      } catch (IOException e) {
                e.printStackTrace();
      }
    }

    public void paint(Graphics g) {
        super.paint(g);
        repaint();

        Random random = new Random();
        int x = random.nextInt(getWidth()*2);
        int y = random.nextInt(getHeight()*2);
        g.drawImage(Image,x,y,4,4,this);

    }

    public static void main(String[] args) {
        JFrame frame = new JFrame(NAME);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.add(new Game());
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.setResizable(true);
        frame.addMouseListener(mos);
        frame.addMouseMotionListener(mos);
    }
}

这里的代码不起作用(图片再次跳转。

public void paintComponent(Graphics g) {
        super.paintComponent(g);
        repaint();
        Random random = new Random();
        int x = random.nextInt(getWidth()*2);
        int y = random.nextInt(getHeight()*2);
        g.drawImage(kor,x,y,10,10,this);
}

@camickr,你说要删除 repaint(); 但没有它我没有照片

4

1 回答 1

1
  1. 自定义绘画是通过覆盖paintComponent()方法而不是 paint() 方法来完成的。
  2. 永远不要在绘画方法中调用 repaint()。这将导致无限循环。

如何修复图片?他们没有跳。

基本上位置需要在绘画方法之外确定。

也许您可以从自定义绘画方法开始,以获得在面板上绘画多个对象的想法。我建议将对象添加到列表的第一种方法。因此,您可以将多个对象添加到列表中,但每个对象都会被赋予一个随机位置。

你说要删除 repaint(); 但没有它我没有照片

你有没有花时间看我给你的链接?这些示例向您展示了何时执行 repaint()。

于 2013-11-06T18:20:17.267 回答