如何从我的计时器中删除毫秒

时间:2015-02-09 16:29:17

标签: timer

我正在为学校制作这款游戏​​,我正在尝试为游戏添加计时器。我有计时器工作,但不是我想要的方式。它刷新,它有几毫秒。我搜索过每个网站的答案,但我只能找到日期和时间,或者如何显示它们。我需要恰恰相反。

package GameState;

import Main.GamePanel;
import TileMap.*;
import Entity.*;
import Entity.Enemies.*;
import Audio.AudioPlayer;
//timer imports
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.ArrayList;

public class Level1State extends GameState {

private TileMap tileMap;
private Background bg;
private static int cnt;
private Player player;

private ArrayList<Enemy> enemies;
private ArrayList<Explosion> explosions;

private HUD hud;

private AudioPlayer bgMusic;

public Level1State(GameStateManager gsm) {
    this.gsm = gsm;
    init();
}

public void init() {

    tileMap = new TileMap(30);
    tileMap.loadTiles("/Tilesets/grasstileset.gif");
    tileMap.loadMap("/Maps/level1-1.map");
    tileMap.setPosition(0, 0);
    tileMap.setTween(1);

    bg = new Background("/Backgrounds/grassbg1.2.jpg", 0.1);

    player = new Player(tileMap);
    player.setPosition(100, 100);

    populateEnemies();

    explosions = new ArrayList<Explosion>();

    hud = new HUD(player);

    bgMusic = new AudioPlayer("/Music/level1-1.mp3");
    bgMusic.play();

}

private void populateEnemies() {

    enemies = new ArrayList<Enemy>();

    Slugger s;
    Point[] points = new Point[] {
        new Point(200, 100), 
        new Point(860, 200),
        new Point(1525, 200),
        new Point(1680, 200),
        new Point(1800, 200)
    };
    for(int i = 0; i < points.length; i++) {
        s = new Slugger(tileMap);
        s.setPosition(points[i].x, points[i].y);
        enemies.add(s);
    }

}

public void update() {

    // update player
    player.update();
    tileMap.setPosition(
        GamePanel.WIDTH / 2 - player.getx(),
        GamePanel.HEIGHT / 2 - player.gety()
    );

    // set background
    bg.setPosition(tileMap.getx(), tileMap.gety());

    // attack enemies
    player.checkAttack(enemies);

    // update all enemies
    for(int i = 0; i < enemies.size(); i++) {
        Enemy e = enemies.get(i);
        e.update();
        if(e.isDead()) {
            enemies.remove(i);
            i--;
            explosions.add(
                new Explosion(e.getx(), e.gety()));
        }
    }

    // update explosions
    for(int i = 0; i < explosions.size(); i++) {
        explosions.get(i).update();
        if(explosions.get(i).shouldRemove()) {
            explosions.remove(i);
            i--;
        }
    }

}

public void draw(final Graphics2D g) {

    // draw bg
    bg.draw(g);

    // draw tilemap
    tileMap.draw(g);

    // draw player
    player.draw(g);

    // draw enemies
    for(int i = 0; i < enemies.size(); i++) {
        enemies.get(i).draw(g);
    }

    // draw explosions
    for(int i = 0; i < explosions.size(); i++) {
        explosions.get(i).setMapPosition(
            (int)tileMap.getx(), (int)tileMap.gety());
        explosions.get(i).draw(g);
    }

    // draw hud
    hud.draw(g);

      ActionListener actListner = new ActionListener() {              
          public void actionPerformed(ActionEvent event) {               
             cnt += 1;               
             g.drawString("Counter = "+cnt, 120, 120);               
          }              
      };         
       Timer timer = new Timer(1000, actListner);            
       timer.start();   
}

public void keyPressed(int k) {
    if(k == KeyEvent.VK_LEFT) player.setLeft(true);
    if(k == KeyEvent.VK_RIGHT) player.setRight(true);
    if(k == KeyEvent.VK_UP) player.setUp(true);
    if(k == KeyEvent.VK_DOWN) player.setDown(true);
    if(k == KeyEvent.VK_W) player.setJumping(true);
    if(k == KeyEvent.VK_E) player.setGliding(true);
    if(k == KeyEvent.VK_R) player.setScratching();
    if(k == KeyEvent.VK_F) player.setFiring();
}

public void keyReleased(int k) {
    if(k == KeyEvent.VK_LEFT) player.setLeft(false);
    if(k == KeyEvent.VK_RIGHT) player.setRight(false);
    if(k == KeyEvent.VK_UP) player.setUp(false);
    if(k == KeyEvent.VK_DOWN) player.setDown(false);
    if(k == KeyEvent.VK_W) player.setJumping(false);
    if(k == KeyEvent.VK_E) player.setGliding(false);
}

}

这是我需要帮助的部分:

          ActionListener actListner = new ActionListener()    {           
          public void actionPerformed(ActionEvent event) {               
             cnt += 1;               
             g.drawString("Counter = "+cnt, 120, 120);               
          }              
      };         
       Timer timer = new Timer(1000, actListner);            
       timer.start();

任何人都可以帮助我吗?我不能让它停止刷新,它也不会消除毫秒。

提前谢谢

P.S。

我感觉第一秒比其他人慢。

P.P.S。:我已经看过&#34;如何实现计时器&#34;但是没有一个有效,我在一个没有发现错误的网站上找到了这个。

0 个答案:

没有答案