繁体   English   中英

Java - 图形绘画

[英]Java - graphics paint

我正在尝试开发一个Java brick breaker(比如DxBall)游戏,我想用自己的draw方法制作Ball对象。

我正在尝试做什么:

public class Ball {
  private int x, y, diameter;
  public void  Ball(){
    x = 0;
    y = 0; 
    diameter = 20;
  }

  public void draw(Graphics g){
    g.setPaint(Color.red);
    g.fillOval(x, y, diameter, diameter);
  }
}

因此,我的游戏引擎扩展了JFrame ,它的paintComponent方法将调用游戏对象的draw方法。 总而言之,在Java中进行面向对象游戏是否正确? 我的Ball类应该扩展什么?

如果您希望将Ball设为图形组件,则可以扩展JComponent

public class Ball extends JComponent {
    private int x;
    private int y
    private int diameter;

    public Ball() {
        x = 0; 
        y = 0; 
        diameter=20;
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setPaint(Color.red);
        g.fillOval(x, y, diameter, diameter);          
    }
}

当您希望绘制组件而不是自定义draw方法时,只需调用repaint

注意:构造函数没有返回类型。

你的Ball类似乎看起来不错。 它不需要扩展任何东西。 您需要将Graphics对象从游戏对象的paintComponent传递给Ball draw方法。

你的课很好但我建议扩展课程。 通常称为SpriteActionGameObject此类包含基本信息,例如

image (or animation), position, collision rect and some basic functions like get and set it's position, speed and some collision detection functions if you wish.

一些资源。

希望他们能帮上忙。 并绘制对象,做

g.drawImage(ball.image, ball.x, ball.y, null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM