摇摆计时器不起作用

时间:2017-05-04 15:20:05

标签: java swing timer

我正在为一个班级创建一个街机游戏。游戏是Columns。我试图使所有自由浮动块每秒下降一次。我的代码使它们失败,但定时器没有。以下是我的代码的相关部分。

前两个出现在我用来管理内部逻辑

的BlockManager对象中
public void play(){
    t = new Timer(1000, this);
    t.start();
    }
public void actionPerformed(ActionEvent e) {
    for(int v = 0;v < this.x; v++){
        if(v > this.x || v < 0){
            break;
            }
            for(int b = 0;b < this.y ;b++){
                this.gameScreen.get(v).get(b).setActive(true);
            }
        }
        for(int i = 0;i < this.x; i++){
            if(i > this.x || i < 0){
                break;
            }
            for(int j = 0;j < this.y ;j++){
                if(this.gameScreen.get(i).get(j).getActive() == true){
                    if(j + 1 < this.y){
                        if(this.gameScreen.get(i).get(j+1).toString().equals(".")){ 
    Collections.swap(this.gameScreen.get(i), j, j+1);
    this.gameScreen.get(i).get(j+1).setActive(false);
                        }
                    }
                }
            }
        }
    }

this is the main method that is another file. 

public static void main(String[] args){
    ColumnsUI Col = new ColumnsUI(9,9);
    Col.game.nextBlock();
    Col.gw.add(Col.show);
    Col.game.play();
}

列UI对象是一种基于内部逻辑绘制的简单方法。我怀疑它与定时器故障有关,因为它在我手动调用actionPerformed的内容时起作用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

当某些事件发生时,会调用actionPerfomed。您应该为计时器创建一个单独的类。就像在这段代码中一样,当然必须用你的代码替换Task类,这会移动砖块。

Timer timer = new Timer();

// Start in 1 second and then all 5 seconds forever repatedly
timer.schedule( new Task(), 1000, 5000 );

请查看Java API for TimerTask