2016-10-18 1 views
0

EDIT- J'ai trouvé la solution pour le problème J'ai mis mysound ++; View.OnClickListener aButtonChangeImageListener = new View.OnClickListener (Image et le son dans Array changer en cliquant sur le bouton suivant dans Android

J'ai une application avec un tableau d'images et de sons.Lorsque l'utilisateur clique sur le bouton suivant, les images passent à la suivante.Le problème que j'ai, c'est que je ne peux pas changer le son pour L'application joue le premier son tout le temps ou elle joue tous les sons du tableau J'ai besoin de faire passer le son au suivant après avoir cliqué sur le bouton suivant pour refléter le changement d'image. sound1, image a2 = sound2

privé ImageButton MainImage, ImageLeft, ImageRight;. privé ImageButton nextButton,

private int currentImage = 0; 
int[] images = { R.drawable.a1, R.drawable.b1, R.drawable.c1, R.drawable.d1, R.drawable.e1, R.drawable.f1 }; 
private int currentImage2 = 0; 
int[] images2 = { R.drawable.a2, R.drawable.b2, R.drawable.c2, R.drawable.d2, R.drawable.e2, R.drawable.f2 }; 
private int currentImage3 = 0; 
int[] images3 = { R.drawable.a3, R.drawable.b3, R.drawable.c3, R.drawable.d3, R.drawable.e3, R.drawable.f3 }; 
private int[] sounds = { R.raw.sound1, R.raw.sound2, R.raw.sound3, R.raw.sound4, R.raw.sound5, R.raw.sound6, }; 
private int mysound = 0; 
private int[] sounds2 = { R.raw.sound1a, R.raw.sound2a, R.raw.sound3a,R.raw.sound4a, R.raw.sound5a, R.raw.sound6a, }; 
private int mysound2 = 0; 
MediaPlayer mp; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_aplhascreen); 

    MainImage = (ImageButton) findViewById(R.id.imageButton1); 
    ImageLeft = (ImageButton) findViewById(R.id.imageButton2); 
    ImageRight = (ImageButton) findViewById(R.id.imageButton3); 
    nextButton = (ImageButton) findViewById(R.id.imageButton5); 

    ImageLeft.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      mp = MediaPlayer.create(Alphascreen.this, sounds[0]); 
      mp.start(); 
      mysound++; 

      ImageRight.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       mp = MediaPlayer.create(Alphascreen.this, sounds2[0]); 
        mp.start(); 
        mysound2++; 

       } 

      }); 

      nextButton.setOnClickListener(aButtonChangeImageListener); 

     } 

     View.OnClickListener aButtonChangeImageListener = new View.OnClickListener() { 

      public void onClick(View v) { 
       currentImage++; 
       currentImage = currentImage % images.length; 
       currentImage2++; 
       currentImage2 = currentImage2 % images.length; 
       currentImage3++; 
       currentImage3 = currentImage3 % images.length; 
       mysound++; 
       mysound = mysound % sounds.length; 
       mysound2++; 
       mysound2 = mysound2 % sounds2.length; 

       MainImage.setImageResource(images[currentImage]); 
       ImageLeft.setImageResource(images2[currentImage2]); 
       ImageRight.setImageResource(images3[currentImage3]); 

      } 
     }; 
    }); 
}} 
+0

Vous devez passer compteur mySound dans le tableau sonore. Vous avez passé 0. Il ne jouera qu'un seul son pour tous. –

+0

J'essayais mp = MediaPlayer.create (Alphascreen.this, sonne [mysound]); mais que tous les sons du tableau peuvent être joués sur le bouton, cliquez sur un seul au besoin. J'ai aussi essayé mp = MediaPlayer.create (Alphascreen.this, sonne [mysound% sounds.length]); mais sans résultats positifs – Pawel

Répondre

0

Essayez ce code, besoin de réinitialiser MediaPlayer avant d'attribuer une nouvelle piste

ImageRight.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      mp.reset(); // new line 
      mp = MediaPlayer.create(Alphascreen.this, sounds2[0]); 
       mp.start(); 
       mysound2++; 

      } 

     }); 
+0

mp.reset(); ne marche pas – Pawel