Bonjour,

je fais un petit jeu (une sorte de mini-remake de Mario), je voudrais que lorsque mon personnage saute, un son s'enclanche. Seulement, on entends que le tout début du son (à peine audible)

Voilà la partie de ma classe principale qui gère les événements du jeu:

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
 
		this.addKeyListener(new KeyAdapter(){
 
			public void keyPressed(KeyEvent ke){
				if(ke.getKeyCode()==ke.VK_RIGHT){moveX="right";}
				if(ke.getKeyCode()==ke.VK_LEFT){moveX="left";}
				if(ke.getKeyCode()==ke.VK_A && Mario.getJump()==false && canJump==true){Mario.jump(true); canJump=false;}
			}
 
			public void keyReleased(KeyEvent ke){
				if(ke.getKeyCode()==ke.VK_RIGHT){moveX="stop";}
				if(ke.getKeyCode()==ke.VK_LEFT){moveX="stop";}
				if(ke.getKeyCode()==ke.VK_A){canJump=true; Mario.jump(false);}
			}
 
		});
le thread du jeu (toujours dans la class principale):

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
 
public void run(){
 
		while(run!=null){
 
			//controle si Mario marche et si on est à l'une des extremités du niveau ou non, puis dessine le fond. Si on est pas a l'extrémité, le fond se déplace, sinon il ne bouge plus
			if(moveX=="right" && Mario.getPosX()+Mario.getSizeX()>getSize().width-Mario.getMargeX() && positionBackground>-1200){positionBackground-=Mario.getSpeedWalk();}
			if(moveX=="left" && Mario.getPosX()-Mario.getSizeX()<Mario.getMargeX() && positionBackground<0){positionBackground+=Mario.getSpeedWalk();}
			one.show(positionBackground);
 
			//contrôle si mario est au milieu du niveau ou non. Si on est  à l'extrémité du niveau, il doit pouvoir aller jusqu'au bout, sinon il est limité par une marge
			if(positionBackground<0){Mario.touchBoundL(false);}else{Mario.touchBoundL(true);}
			if(positionBackground>-1200){Mario.touchBoundR(false);}else{Mario.touchBoundR(true);}
 
			//contrôle si Mario tombe et agit en conscéquence
			if(Mario.getPosY()+Mario.getSizeY()<580){Mario.fall(true);}else{Mario.fall(false);}	
			Mario.walk(moveX);
 
			joueur.show();
 
			try{run.sleep(25);}catch(InterruptedException ie){System.out.println("problème avec le thread");}
			repaint();
		}
	}
 
}
et la partie de ma classe personnage qui gère les mouvements (dont le saut)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public void walk(String direction){

			//si le personnage tombe			
			if(fall==true && jump==false){posY+=speedFall;
				if(current==bigWalkRight1 || current==bigWalkRight2 || current==bigWaitRight || current==bigJumpRight){current=bigWalkRight2;}
				else{current=bigWalkLeft2;}
			}
			
			//si le personnage saute
			if(jump==true && fall==false){
				soundJump.play();//ici il doit jouer le son
				if(current==bigWalkRight1 || current==bigWalkRight2 || current==bigWaitRight || current==bigJumpRight){current=bigJumpRight;}
				else{current=bigJumpLeft;}
			
				if(posY>startPoint-high){posY-=speedJump;}
				else{jump=false;}
			}

	        //si le peronnage va à gauche
		if(direction=="left"){
			if(touchBoundL==false){if(posX>margeX){posX-=speedWalk;}}
			else{if(posX>0){posX-=speedWalk;}}
			
			if(fall==true && jump==false){current=bigWalkLeft2;}
			else if(jump==true && fall==false){current=bigJumpLeft;}
			
			else if(fall==false && jump==false){	
				if(wait>0 && wait<=temps/2){current=bigWalkLeft1;} if(wait>temps/2 && wait<=temps){current=bigWalkLeft2;}
				wait--; if(wait<=0){wait=temps;}
			}
		}
		
		//si le personnage va à droite
		else if(direction=="right"){
			if(touchBoundR==false){if(posX+current.getWidth(IO)<width-margeX){posX+=speedWalk;}}
			else{if(posX+current.getWidth(IO)<600){posX+=speedWalk;}}
			
			if(fall==true && jump==false){current=bigWalkRight2;}
			if(jump==true && fall==false){current=bigJumpRight;}
			
			else if(fall==false && jump==false){
				if(wait>0 && wait<=temps/2){current=bigWalkRight1;} if(wait>temps/2 && wait<=temps){current=bigWalkRight2;}
				wait--; if(wait<=0){wait=temps;}
			}//fin du if fall==false && jump==false
		}//end of direction=="right"
		
		
		//si le personnage ne bouge pas
		else{
			if((current==bigWalkRight1 || current==bigWalkRight2) && fall==false && jump==false){current=bigWaitRight;}
			else if((current==bigWalkLeft1 || current==bigWalkLeft2) && fall==false && jump==false){current=bigWaitLeft;}
		}

		showPersonnage();
	}
Voilà, j'éspère que vous pourrez m'aider. J'ai penser à faire une class "son" qui implémenterait runnable et gérerait les sons dans un autre thread, mais je ne sais pas trop comment lui faire jouer plusieurs sons.

Merci d'avance