如何drawString()只有一次

时间:2016-09-05 17:58:26

标签: java paint

我有一个程序,用户在网格中旅行并且必须杀死敌人。当他们这样做时,会出现一条消息,指出用户已经听到了尖叫声。

此消息仅在用户发射武器时显示一次。如果以下方法为真,我会显示消息:

 public boolean deadWumpus()
 {
     for(int x=0;x<10;x++)
     {
         for(int y=0;y<10;y++)
         {
             if(map.grid[x][y].getDeadWumpus()==true)
                 return true;
         }
     }
     return false;
 }

然后我在paint()方法中有一行说明如果此方法为true,则显示消息。但是,由于没有调节器告诉它在用户触发时只运行一次,因此会继续显示。 我试图创建一个int以确保它只运行一次:

// at beginning of program 
int once=0;
//in paint()
    if(once==0){
    if(deadWumpus()==true)
    {
        g.drawString("You hear a scream.",300,675);

    }
    }
    once++;

使用它,它永远不会显示消息。我有没有办法让消息只在用户拍摄时显示一次,然后在用户下一次移动后消失? 感谢。

1 个答案:

答案 0 :(得分:1)

每次在屏幕上绘制游戏框架时,都会调用paint()方法。当你把它绘制成'#34;只有一次,&#34;你只是画了一次#34;&#34;因为,对于只有一帧,由于帧正在快速更新,文本闪烁然后再也不会出现。我推荐这样的东西:

long userFired;

//当用户触发时 - &gt; userFired = System.currentTimeMillis();

paint() { /*the "2000" means that the text will display for 2 seconds*/
    if(System.currentTimeMillis()-userFired < 2000 && deadWumpus()==true) {
        g.drawString("You hear a scream.",300,675);
    }
}