首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -图形绘制

Java -图形绘制
EN

Stack Overflow用户
提问于 2012-11-18 00:02:03
回答 3查看 647关注 0票数 2

我正在尝试开发一个Java砖块破碎机(如DxBall)游戏,我想用自己的draw方法创建Ball对象。

我想要做的是:

代码语言:javascript
复制
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方法将调用游戏对象绘制方法。综上所述,用Java做面向对象的游戏合适吗?我的Ball类应该扩展什么?

EN

回答 3

Stack Overflow用户

发布于 2012-11-18 00:05:36

如果您希望使Ball成为图形组件,您可以扩展JComponent

代码语言:javascript
复制
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即可。

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

票数 3
EN

Stack Overflow用户

发布于 2012-11-18 00:06:15

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

票数 3
EN

Stack Overflow用户

发布于 2012-11-18 01:07:36

您的类很好,但我建议您扩展一个类。这个类通常称为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.

一些资源。

  • The Breakout game
  • GEJ - game-engine-for-java
  • Java-Gaming.org - Java Gaming Resources

希望他们能帮上忙。要绘制对象,请执行以下操作

代码语言:javascript
复制
g.drawImage(ball.image, ball.x, ball.y, null);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13432231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档