Bonjour,
Je suis nouveau ici et je souhaite développer un petit simulateur de guitare ( où la souris gratte les cordes et le clavier permet de les pincer, simple au début :p)
Je rencontre un soucis au niveau des évenements liés aux cordes. Lorsque que la souris passe sur une corde (Y de la souris == Y de la corde pour l'instant) elle lance un thread de calcul de vibration. Chaque corde a sa gestion d'événements (MouseMotionAdapter) que j'ajoute une à une à la frame ou la guitare est dessinée (addMouseMotionListener(laCorde.GestionEvt) pour chaque corde). le tout marche trés bien, seulement lorsque que je passe le curseur trop vite (et encore pas tant que ça) l'événement est oublié ou perdu je sais pas. J'ai déjà chercher longement sur internet ce genre de problème, sans succés. Code moisi ? pertes inévitables ? évitables ?
Si ce projet interesse quelqu'un je suis tout disponible
Voici le code en dégrossi :
Mci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 class Guitare extends Observable { [...] private List<Corde> sesCordes; [...] } class Corde extends Observable { [...] private class GestionEvt extends MouseMotionAdapter { public void mouseMoved(MouseEvent e) { if( e.getY() == this.sonPoint1.get_sonY() ) { // ici il y a des pertes calculVibration(); // lance un thread mettreAJour(); // redessine la guitare } } } [...] } class Main extends JFrame implements Observer { [...] public Main() { [...] uneGuitare = new Guitare(); [...] for(Corde uneCorde : uneGuitare.get_sesCordes()) { addMouseMotionListener(uneCorde.get_saGestionEvt()); } [...] } }
Partager