IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

Les sons cessent juste après s'être lancés


Sujet :

Multimédia Java

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut Les sons cessent juste après s'être lancés
    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

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    re-bonjour,

    bizarrement, quand je l'execute dans un navigateur, le son se joue, mais cette fois le problème est qu'il recommence sans arrêt, jusqu'à ce que l'on relâche la touche "A" (et là il se joue normalement). J'ai réglé le problème en faisant que le son ne se joue que si la position Y du perso est égale à la position de départ (avant qu'il ait sauté, donc il ne se joue plus d'une fois que le perso est en l'air), mais pour d'autres sons je ne sais pas si je pourrais trouver chaque fois un astuce...

    J'aimerai bien savoir:
    1) pourquoi le résultat est différent entre l'"applet viewer" et un navigateur.
    2) y aurait-il un moyen de savoir si le son est déjà en train d'être jouer (pour pouvoir fair un truc du genre: "if(!(soundJump.isPlaying())){soundJump.play();}"
    3) y a-t-il un risque qu'un autre navigateur réagisse de la même manière que l'"applet viewer" (qu'il ne joue qu'une toute petite partie du son)


    Merci (désolé de ne pas avoir testé dans un navigateur plus tôt)

Discussions similaires

  1. (Bonne idée?) stage juste après les classes prépa
    Par Neo-Neo dans le forum Emploi
    Réponses: 10
    Dernier message: 26/04/2015, 20h25
  2. La Window se ferme automatique après s'être lancé
    Par morel16 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 30/03/2010, 12h36
  3. Un voleur arrêté après s'être connecté sur Facebook pendant son vol
    Par Pierre Louis Chevalier dans le forum Humour Informatique
    Réponses: 50
    Dernier message: 18/11/2009, 18h41
  4. lister toutes les exceptions pouvant être lancées
    Par fabaroulettes dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2007, 19h05
  5. Comment changer les sons de Windows ?
    Par leonard.morel dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 28/07/2005, 20h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo