Использование handler.postDelayed и дублирует действия - PullRequest
0 голосов
/ 26 января 2020

Я использую эту функцию, чтобы изменить фон на таймере. Я пытаюсь сделать игру Simon, но каждый раз, когда вызывается функция, она дублирует себя.

private void mostrar(final int[] dados, final int quant) {

        switch (dados[pos]) {
            case 1:
                vermelho.setBackgroundResource(R.drawable.ic_vermelhoanimado);
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Log.d(TAG, "mostrar: " + quant +" -> " + pos +" ->" + dados[pos]);
                        vermelho.setBackgroundResource(R.drawable.ic_vermelho);
                        if((pos+1)<quant){
                            pos++;
                            mostrar(dados,quant);
                        }else{
                            ativarBotoes(quant);
                        }

                    }
                }, 1000);
            case 2:
                amarelo.setBackgroundResource(R.drawable.ic_amareloanimado);
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Log.d(TAG, "mostrar: " + quant +" -> " + pos +" ->" + dados[pos]);
                        amarelo.setBackgroundResource(R.drawable.ic_amarelo);
                        if((pos+1)<quant){
                            pos++;
                            mostrar(dados,quant);
                        }else{
                            ativarBotoes(quant);
                        }
                    }
                }, 1000);
            case 3:
                azul.setBackgroundResource(R.drawable.ic_azulanimado);
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Log.d(TAG, "mostrar: " + quant +" -> " + pos +" ->" + dados[pos]);
                        azul.setBackgroundResource(R.drawable.ic_azul);
                        if((pos+1)<quant){
                            pos++;
                            mostrar(dados,quant);
                        }else{
                            ativarBotoes(quant);
                        }
                    }
                }, 1000);
            case 4:
                verde.setBackgroundResource(R.drawable.ic_verdeanimado);
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Log.d(TAG, "mostrar: " + quant +" -> " + pos +" ->" + dados[pos]);
                        verde.setBackgroundResource(R.drawable.ic_verde);
                        if((pos+1)<quant){
                            pos++;
                            mostrar(dados,quant);
                        }else{
                            ativarBotoes(quant);
                        }
                    }
                }, 1000);
        }

    }'''

это logcat:

2020-01-26 18: 53: 35.546 15173-15173 / pt.ipp.estg.cmu D / Ограничения: mostrar: 5 -> 0 -> 4 2020-01-26 18: 53: 36.551 15173-15173 / pt.ipp.estg.cmu D / Ограничения: mostrar: 5 -> 1 -> 4 2020-01-26 18: 53: 37.557 15173-15173 / pt.ipp.estg.cmu D / Ограничения: mostrar: 5 -> 2 -> 2 2020-01-26 18: 53: 37.558 15173-15173 / pt.ipp.estg.cmu D / Ограничения: mostrar: 5 -> 3 -> 4 2020-01-26 18: 53: 37.562 15173-15173 / pt.ipp.estg.cmu D / Ограничения: Mostrar: 5 -> 4 -> 1 2020-01-26 18: 53: 38.560 15173-15173 / pt.ipp.estg.cmu D / Ограничения: Mostrar: 5 -> 4 -> 1 2020-01 -26 18: 53: 38.560 15173-15173 / pt.ipp.estg.cmu D / Ограничения: Mostrar: 5 -> 4 -> 1 2020-01-26 18: 53: 38.575 15173-15173 / pt.ipp.estg .cmu D / Ограничения: мост: 5 -> 4 -> 1 2020-01-26 18: 53: 38.578 15173-15173 / pt.ipp.estg.cmu D / Ограничения: мост: 5 -> 4 -> 1 2020 -01-26 18: 53: 38,579 15173-15173 / pt.ipp.estg.cmu D / Ограничения : mostrar: 5 -> 4 -> 1

предполагается, что он появляется только 5 раз, но всегда появляется больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...