1
resposta

[Dúvida] DÚVIDA alerta shift+alt

  • programei para que quando apertem shift + alt e cliquem no canvas ele exiba a mensagem assim como na resolução entretanto ele após exibir a mensagem desenha um circulo no local onde foi clicado , gostaria de saber como resolver isso ;
  • Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeo código usado foi :

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

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

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


var cores = ["blue", "red", "green"];
var contador = 0;

var raio = 10

function tiro(cordenadas) {
    var x = cordenadas.pageX - tela.offsetLeft;
    var y = cordenadas.pageY - tela.offsetTop;

   if (cordenadas.altKey && cordenadas.shiftKey) {alert(" Por favor pressione 1 de cada vez")}
  else if (cordenadas.shiftKey && raio <= 40) { raio +=  10}
   else if (cordenadas.altKey && raio > 10) { raio -=  5}

    pincel.fillStyle = cores[contador];
    pincel.beginPath();
    pincel.arc(x, y, raio, 0, 2 * 3.14);
    pincel.fill();
    }


   tela.onclick = tiro;

function mudaCor() {

  contador++

 if (contador >= cores.length) {
      contador = 0}



   return false;
}




    tela.oncontextmenu = mudaCor;


</script>

1 resposta

Oii, Dev! Tudo bem?

Agradeço por aguardar o nosso retorno.

Obrigada por compartilhar o seu projeto com a comunidade! Para evitar que o círculo seja desenhado ao pressionar "Shift+Alt", você pode adicionar uma condição extra no evento tiro() para verificar se ambos os modificadores de tecla estão pressionados. Caso estejam, você pode simplesmente retornar sem executar o restante do código.

Veja como ficará o código com a condição adicionada:

<canvas width="600" height="400"></canvas>
<script>
  var tela = document.querySelector("canvas");
  var pincel = tela.getContext("2d");

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

  var cores = ["blue", "red", "green"];
  var contador = 0;

  var raio = 10;

  function tiro(cordenadas) {
    if (cordenadas.altKey && cordenadas.shiftKey) {
      alert("Por favor, pressione apenas uma tecla modificadora por vez");
      return;
    }

    var x = cordenadas.pageX - tela.offsetLeft;
    var y = cordenadas.pageY - tela.offsetTop;

    if (cordenadas.shiftKey && raio <= 40) {
      raio += 10;
    } else if (cordenadas.altKey && raio > 10) {
      raio -= 5;
    }

    pincel.fillStyle = cores[contador];
    pincel.beginPath();
    pincel.arc(x, y, raio, 0, 2 * 3.14);
    pincel.fill();
  }

  tela.onclick = tiro;

  function mudaCor() {
    contador++;

    if (contador >= cores.length) {
      contador = 0;
    }

    return false;
  }

  tela.oncontextmenu = mudaCor;
</script>

Fique à vontade para copiar o código e colá-lo em seu projeto, salve e teste se funcionou conforme o esperado.

Espero ter ajudado, qualquer dúvida, estarei à disposição.

Bons estudos!