Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Código com laço e array

Olá!

Eu consegui fazer o código usando array e while e queria saber se há algo que eu possa melhorar no programa.

<meta charset="UTF-8">

<canvas width = "600" height = "400"></canvas>

<script>
    function desenhaBandeiraBrasil() {
        var tela = document.querySelector("canvas");
        var pincel = tela.getContext("2d");

        pincel.fillStyle = "green";
        pincel.fillRect(0,0,600,400);

        pincel.fillStyle = "yellow";
        pincel.beginPath();
        pincel.moveTo(300,50);
        pincel.lineTo(50,200);
        pincel.lineTo(550,200);
        pincel.fill();

        pincel.beginPath();
        pincel.moveTo(50,200);
        pincel.lineTo(300,350);
        pincel.lineTo(550,200);
        pincel.fill();

        pincel.fillStyle= "darkblue";
        pincel.beginPath();
        pincel.arc(300,200,100, 0, 2*Math.PI);
        pincel.fill();
    };

    function desenhaBandeiraAlemanha() {
        var tela = document.querySelector("canvas");
        var pincel = tela.getContext("2d");

        pincel.fillStyle = "black";
        pincel.fillRect(0,0,600,133);

        pincel.fillStyle = "red";
        pincel.fillRect(0,133,600,133);

        pincel.fillStyle = "yellow";
        pincel.fillRect(0,266,600,133);
    };

    function desenhaBandeiraItalia() {
        var tela = document.querySelector("canvas");
        var pincel = tela.getContext("2d");

        pincel.fillStyle = "darkgreen";
        pincel.fillRect(0,0,200,400);

        pincel.fillStyle = "white";
        pincel.fillRect(200,0, 200, 400);

        pincel.fillStyle = "red";
        pincel.fillRect(400,0, 200, 400);
    }

    var posicao = 0;
    console.log(posicao);
    var incremento = 1;
    var listaBandeiras = ["Brasil", "Alemanha", "Italia"];
    var tamanhoLista = listaBandeiras.length;

    function trocaBandeira() {        
        while(posicao < listaBandeiras.length){
            console.log(listaBandeiras[posicao] + " " + posicao);

            if(listaBandeiras[posicao] == "Brasil"){
                desenhaBandeiraBrasil();
                posicao += incremento;
                break;
            }

            else if(listaBandeiras[posicao] == "Alemanha") {
                desenhaBandeiraAlemanha();
                posicao += incremento;
                break;
            }

            else if(listaBandeiras[posicao] == "Italia"){
                desenhaBandeiraItalia();
                posicao = posicao - tamanhoLista + incremento;
                break;
            }

        }
    }

    setInterval(trocaBandeira, 3000);

</script>

Obrigado :D

1 resposta
solução!

Existe o foreach que ele varre todos os elementos da lista sem se importara com a posição por que ele sempre traz o próximo elemento não lido...

<!DOCTYPE html>
<html>
<body>

<p>Click the button to list all the items in the array.</p>
<button onclick="numbers.forEach(myFunction)">Try it</button>
<p id="demo"></p>

<script>
demoP = document.getElementById("demo");
var numbers = [4, 9, 16, 25];

function myFunction(item, index) {
    demoP.innerHTML = demoP.innerHTML + "index[" + index + "]: " + item + "<br>"; 
}
</script>

</body>
</html>

retirado de : https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_foreach