Le code suivant doit gérer les événements ACTION_DOWN et ACTION_UP pour un bouton nommé collision. l'idée est qu'une fois if/else détermine que l'événement onTouch a été causé par un conflit et que l'instruction switch détermine ensuite ce qu'il faut faire en fonction de l'action. Je ne sais pas si le problème est que les instructions switch ne retournent pas vrai et cela peut être lié au problème. quand j'ajoute un retour, eclipse dit que le code est inaccessible ce que je ne comprends pas. J'avais l'impression que vous ne pouvez pas sortir d'un interrupteur sans pause. Ce qui se passe actuellement, c'est que le premier son se déclenche mais le code ne semble jamais détecter l'action lorsque le bouton est relâché et que le son est joué pour toujours. Toute aide serait appréciée.Problème avec les instructions if/else et switch
public boolean onTouch(View v, MotionEvent event) {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.clash);
if (v.getId() == R.id.clash){
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
mp.setLooping(true);
mp.start();
break;
case MotionEvent.ACTION_UP:
mp.pause();
break;
}
}
return true;
}
});
même après avoir ajouté "return true;" Je ne reçois toujours rien sur l'action. Je peux même mettre le code pour jouer le son dans ce cas plutôt que l'action vers le bas et il ne fait rien. – Prmths
Je ne suis pas sûr à ce sujet, mais cela ne créerait-il pas un nouvel objet MediaPlayer chaque fois que vous appuyez sur OU relâchez? Dans ce cas, vous appelleriez 'pause()' sur une autre instance de MediaPlayer que 'start()' a été appelé? – kcoppock
cela a du sens. le problème est, quand je déplace la création de mp à la partie de la logique qui gère l'événement ACTION_DOWN, rien ne se passe. il ne joue aucun son du tout. Je commence à envisager d'abandonner complètement MediaPlayer puisque je dois créer et détruire l'objet chaque fois qu'un son est joué. Chaque recherche que je fais indique que vous ne pouvez pas définir DataSource à la volée. – Prmths