如何只 drawString() 一次
How to drawString() only once
我有一个程序,用户在网格中移动并且必须杀死敌人。当他们这样做时,会出现一条消息,说明用户听到了尖叫声。
这条消息应该只在用户开火时显示一次。如果以下方法为真,我会显示消息:
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() 方法中有一行说明如果此方法为真则显示消息。但是,这会继续显示,因为没有调节器告诉它 运行 仅在用户触发时显示一次。
我试图创建一个 int 以确保它只有 运行s 一次:
// at beginning of program
int once=0;
//in paint()
if(once==0){
if(deadWumpus()==true)
{
g.drawString("You hear a scream.",300,675);
}
}
once++;
使用它永远不会显示消息。有没有一种方法可以让消息只在用户射击时显示一次,然后在用户进行下一步操作时消失?
谢谢
每次在屏幕上绘制游戏帧时都会调用 paint() 方法。当你让它绘制 "only once," 时,你实际上是在绘制 "only once," ,因为只有一帧,因为帧更新得非常快,文本会闪烁,然后再也不会出现。我推荐这样的东西:
long userFired;
// 当用户触发时 -> 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);
}
}
我有一个程序,用户在网格中移动并且必须杀死敌人。当他们这样做时,会出现一条消息,说明用户听到了尖叫声。
这条消息应该只在用户开火时显示一次。如果以下方法为真,我会显示消息:
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() 方法中有一行说明如果此方法为真则显示消息。但是,这会继续显示,因为没有调节器告诉它 运行 仅在用户触发时显示一次。 我试图创建一个 int 以确保它只有 运行s 一次:
// at beginning of program
int once=0;
//in paint()
if(once==0){
if(deadWumpus()==true)
{
g.drawString("You hear a scream.",300,675);
}
}
once++;
使用它永远不会显示消息。有没有一种方法可以让消息只在用户射击时显示一次,然后在用户进行下一步操作时消失? 谢谢
每次在屏幕上绘制游戏帧时都会调用 paint() 方法。当你让它绘制 "only once," 时,你实际上是在绘制 "only once," ,因为只有一帧,因为帧更新得非常快,文本会闪烁,然后再也不会出现。我推荐这样的东西:
long userFired;
// 当用户触发时 -> 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);
}
}