开发者社区> 问答> 正文

如何在对象类的绘制图形中设置计时器

首先,对不起我的语法。我需要创建炸弹对象并涂成黑色,然后在5秒钟后将其涂成红色而不冻结我的游戏,我尝试制作Bomber Man游戏。谢谢

import java.awt.*;
public class Bomb {
    int x,y;
    int block = 60;
    public Bomb(int x,int y) {
        this.x = x;
        this.y = y;
    }
    void draw(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillOval(this.x * block, this.y * block, block, block);
        if ( /*TIMER == 0*/) {
            g.setColor(Color.RED);
            g.fillOval(this.x * block, this.y * block, block, block);
        }
    }
}

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 09:52:00 375 0
1 条回答
写回答
取消 提交回答
  • 您不仅需要更改Bomb对象的颜色,还需要做更多的事情。您的游戏需要跟踪炸弹的状态。因此,您需要在其他类中创建一个Timer,并让Timer的动作侦听器更改Bomb的属性,Bomb类使用该属性来确定其绘制方式:

    public class Bomb {
        boolean expired;
    
        // ...
    
        void draw(Graphics g) {
            g.setColor(expired ? Color.RED : Color.BLACK);
            g.fillOval(this.x * block, this.y * block, block, block);
        }
    }
    

    无论什么类控制游戏的逻辑,每当创建炸弹时都需要创建一个Timer:

    Bomb bomb = new Bomb(x, y);
    Timer timer = new Timer(10_000, e -> {
        bomb.expired = true;
    });
    timer.setRepeats(false);
    timer.start();
    

    回答来源:Stack Overflow

    2020-03-27 10:03:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载