N
Nowhereman
Gast
Hallo,
ich bin gerade dabei ein Programm zu programmieren, das Gitarrentabs berechnet und grafisch ausgibt. Wenn man mit gedrückter Maustaste über die Saiten der Tabs fährt sollte man dann auch die passenden Töne hören. Dafür frage ich in der MouseDragged()-Methode einfach die Y-Position der Maus ab. Wenn sie genau über einer Saite ist, wird eine Methode aufgerufen die den entsprechenden Ton abspielt. Im Grunde klappt das auch alles, aber wenn ich schnell über alle Saiten fahre geschieht gar nichts oder es werden nur ein oder zwei Töne abgespielt. Irgendwie kommt es mir so vor, als würde der MouseMotionListener bei schnellen Mausbewegungen nicht mehr mitkommen?! An dem Audio-Abspielen liegt es nicht, da es auch für andere einfache Befehle (wie System.out.println) nicht funktioniert wenn ich die Maus zu schnell bewege.
Hier noch der Code meiner mouseDragged()-Methode:
Ich wäre sehr dankbar, wenn mir jemand einen Tipp geben könnte!
ich bin gerade dabei ein Programm zu programmieren, das Gitarrentabs berechnet und grafisch ausgibt. Wenn man mit gedrückter Maustaste über die Saiten der Tabs fährt sollte man dann auch die passenden Töne hören. Dafür frage ich in der MouseDragged()-Methode einfach die Y-Position der Maus ab. Wenn sie genau über einer Saite ist, wird eine Methode aufgerufen die den entsprechenden Ton abspielt. Im Grunde klappt das auch alles, aber wenn ich schnell über alle Saiten fahre geschieht gar nichts oder es werden nur ein oder zwei Töne abgespielt. Irgendwie kommt es mir so vor, als würde der MouseMotionListener bei schnellen Mausbewegungen nicht mehr mitkommen?! An dem Audio-Abspielen liegt es nicht, da es auch für andere einfache Befehle (wie System.out.println) nicht funktioniert wenn ich die Maus zu schnell bewege.
Hier noch der Code meiner mouseDragged()-Methode:
Code:
public void mouseDragged(MouseEvent event) {
mouseX = event.getX();
mouseY = event.getY();
/* 1.Saite
*/
if (mouseY == 76 && !tab[pos].getStringMuted(0)) {
System.out.println("maus1"); // dient nur zum Test
play.playString(0, tab[pos].getFret(0));
System.out.println("maus2"); // dient nur zum Test
}
/* 2.Saite
*/
if (mouseY == 120 && !tab[pos].getStringMuted(1)) {
System.out.println("maus1");
play.playString(1, tab[pos].getFret(1));
System.out.println("maus2");
}
/* 3.Saite
*/
if (mouseY == 169 && !tab[pos].getStringMuted(2)) {
System.out.println("maus1");
play.playString(2, tab[pos].getFret(2));
System.out.println("maus2");
}
/* 4.Saite
*/
if (mouseY == 215 && !tab[pos].getStringMuted(3)) {
System.out.println("maus1");
play.playString(3, tab[pos].getFret(3));
System.out.println("maus2");
}
/* 5.Saite
*/
if (mouseY == 260 && !tab[pos].getStringMuted(4)) {
System.out.println("maus1");
play.playString(4, tab[pos].getFret(4));
System.out.println("maus2");
}
/* 6.Saite
*/
if (mouseY == 300 && !tab[pos].getStringMuted(5)) {
System.out.println("maus1");
play.playString(5, tab[pos].getFret(5));
System.out.println("maus2");
}
}
Ich wäre sehr dankbar, wenn mir jemand einen Tipp geben könnte!