Autore Topic: problema sincronizzazione click e cambio sfondo  (Letto 308 volte)

Offline mangiare94

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
problema sincronizzazione click e cambio sfondo
« il: 19 Aprile 2012, 23:44:05 CEST »
0
ciao a tutti ho creato un programma che crea 4 pulsanti e cambiano lo sfondo in modo casuale ogni tot tempo.Lo scopo del gioco è quello di cliccare il pulsante che cambia sfondo decrementando il tempo e quindi rendendo tutto più veloce il mio problema è che se viene cliccato il pulsante prima che cambia colore mi da il punto e mentre lo sfondo è cambiato non me lo da,quindi il cambio di colore e il fatto di cliccarlo per aggiornare il punto non sono sincronizzati come posso risolvere?

Codice (Java): [Seleziona]
final View.OnClickListener gestore = new View.OnClickListener() {

           public void onClick(View view) {
                   
             switch(view.getId()){
             
            case R.id.uno:
            {
                if(s==0){
                        punti++;
                tempo=tempo-10;
       
                }
             }
               
                break;
           case R.id.due:
               
           {if(s==1){
                          punti++;
                         tempo=tempo-10;
           }
             }
                 
                  break;
          case R.id.tre:
          {
                 if(s==2){
                   punti++;
                  tempo=tempo-10;
                 }
          }
               
                 break;
         case R.id.qua:
               
         {if(s==3 ){
                  punti++;
                tempo=tempo-10;
         }
         }
               
                break;
             }
             
           textView.setText(Integer.toString(punti));
           }
               
           };            
         
                                 uno.setOnClickListener(gestore);
                                 due.setOnClickListener(gestore);
                                 tre.setOnClickListener(gestore);
                                 qua.setOnClickListener(gestore);
                           
final Runnable r = new Runnable()

{
 
        public void run(){

       

                        uno.setBackgroundDrawable(blues);
                        due.setBackgroundDrawable(yells);
                        tre.setBackgroundDrawable(reds);
                        qua.setBackgroundDrawable(greens);
             
                        casuali();
                            switch(s){
                         
                        case 0: {
                               
                       
                           uno.setBackgroundDrawable(blue);
                        }
                            break;
                        case 1:{
                               
                       
                                   due.setBackgroundDrawable(yell);
                        }
                            break;
                        case 2:{
                               
                       
                                   tre.setBackgroundDrawable(red);
                        }
                                break;
                        case 3:{
                               
                         
                                   qua.setBackgroundDrawable(green);
                        }
                                break;
                               
                        }
                   
                       
                 mHandler.postDelayed(this  , tempo);
                       
   
                }              
   };
   
   
   
   mHandler.removeCallbacks(r);
   mHandler.post(r);
   
   
}
public int casuali(){
             
           int appo;
                Random random = new Random();
                appo=random.nextInt(4);
                while (appo==s)
                appo=random.nextInt(4);
                 s=appo;
         
                 }