Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen

CptK

Bekanntes Mitglied
Java:
package Action;

import java.awt.event.*;
import java.util.Timer;
import java.util.TimerTask;

import Data.Spielerkugel;
import Game.Settings;
import Gui.Panel;

public class MouseMotionHandler implements MouseMotionListener {
  
    private boolean canShoot = true;
    private Panel p;
  
    public MouseMotionHandler(Panel panel) {
        p = panel;
    }
  
    @Override
    public void mouseDragged(MouseEvent e) {
        //Steuerung der Rotation der Kanone
        //Bewegt man die Maus nach oben, so wird das Kanonenrohr gegen den Uhrzeigersinn rotiert
        //Bewegt man die Maus nach unten, so wird das Kanonenrohr mit dem Uhrzeigersinn rotiert
        double winkel = Math.atan2(420-e.getY(), 70 - e.getX());
        winkel = Math.toDegrees(winkel) - 180;
        if(winkel > -110 && winkel < 20) {
            p.setAngle(winkel);
            p.getKanoneRohr().setImage(p.rotateImageX(p.getKanoneRohr().getBaseImage(), winkel));
          
        }
      
        if(Settings.fastfire) {
            canShoot = false;
            double w = p.getAngle() + 90;
            //Berechnet die Kräfte in x und y Richtung
          
            //Erstellt neue Kanonenkugel
            p.getKanonenkugeln().add(new Spielerkugel(w, 1, 1, 0.1, 15, Settings.spieler_damage, Settings.v0, p));
            pauseShot(5);
        }
    }

  
    //Int für die Methode pauseShot
    private int t = 0;
    //Methode enthält Timer, um Pause zwischen den Schüssen zu erzielen
    public void pauseShot(int duration) {
        Timer timer;
      
        timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                if(t == duration) {
                    canShoot = true;
                    t= 0;
                    timer.cancel();
                }
                t++;
            }
        }, 0, 100);  
    }

}
Das ganze funktioniert nicht:
Da ist keine Verzögerung.

Ich bin etwas ratlos wie ich die Verzögerung zwischen den Schüssen kriegen kann.
 
Ach vergesst es... ich bin ein Idiot. Ich habe eiskalt vergessen zu überprüfen ob canShoot überhaupt true ist....
 

Zurück
Oben