Foros del Web » Programando para Internet » Javascript »

eventos canvas

Estas en el tema de eventos canvas en el foro de Javascript en Foros del Web. Hola gentes, estoy estudiando un poco canvas y estoy queriendo hacer una especie de paint (no lo voy a usar para eso pero para que ...
  #1 (permalink)  
Antiguo 14/10/2013, 16:57
 
Fecha de Ingreso: octubre-2005
Mensajes: 21
Antigüedad: 18 años, 6 meses
Puntos: 0
eventos canvas

Hola gentes, estoy estudiando un poco canvas y estoy queriendo hacer una especie de paint (no lo voy a usar para eso pero para que entiendan el funcionamiento), lo que quiero hacer es apretar un botón que diga linea, entonces cuando yo hago click con el mouse dibujarla despues de mousedown y mouseup para obtener las coordenadas y dibujar la linea.
El problema es que probé con addEventListener y no puedo porque no retorna un valor.
Les muestro mi código para que entiendan mejor xD.
También estoy aprendiendo js xD lo que si no quiero usar es jquery ni nada por el estilo, prefiero usar todo código mio... aunque me lleve mas dolores de cabeza je.
Saludos





el html

Código:
<html>
  <head>
    <title>Paint con HTML5</title>
    <link rel="stylesheet" type="text/css" href="estilos.css" />
    <script type="text/javascript" src="ObjCanvas.js"></script>
  </head>
  <body>
    <canvas id="canvas" width="800" height="600">
    </canvas><br>
    <input type="button" id="cuadrado" value="cuadrado" onclick="seleccion(this.value)"/>
    <input type="button" id="linea" value="linea" onclick="seleccion(this.value)"/>
    <input type="button" id="ovalo" value="ovalo" onclick="seleccion(this.value)"/>
    <input type="button" id="borrador" value="Borrar Todo" onclick="seleccion(this.value)" />

  </body>
</html>

El js
Código:
  document.addEventListener("DOMContentLoaded", iniciar, false);
      function iniciar(){
        var canvas = document.getElementById("canvas");
        contexto = canvas.getContext("2d");
        
      }
 
      function ObtenerCoords(event){
        var x = new Number();
        var y = new Number();
        var canvas = document.getElementById("canvas");
 
        if (event.x != undefined && event.y != undefined){
          x = event.x;
          y = event.y;
        }else{// Firefox
          x = event.clientX + document.body.scrollLeft +
              document.documentElement.scrollLeft;
          y = event.clientY + document.body.scrollTop +
              document.documentElement.scrollTop;
        }
 
        x -= canvas.offsetLeft;
        y -= canvas.offsetTop;
        var result=x+","+y;
        return result;
      }
 function seleccion(value){
     
   switch(value)
{
        case "linea":
                     linea();
        break;
        case "cuadrado":
                     cuadrado();
        break;
        default:
                    selec();
}
     
 }
 
 function linea() {
    var coors;
     
     contexto.strokeStyle = "rgb(200,200,200)";
     contexto.beginPath();
     coors= contexto.addEventListener('mousedown', ObtenerCoords, false);
     contexto.moveTo(coor);
     
     coors= contexto.addEventListener('mouseup', ObtenerCoords, false);   
     contexto.lineTo(coor); 
     contexto.stroke();
     
 }
 
  function cuadrado() {
    
    contexto.fillStyle = "rgb(41,155,243)";
    contexto.fillRect (10, 10, 180, 180);
     
     
     
 }
  #2 (permalink)  
Antiguo 15/10/2013, 10:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: eventos canvas

los eventos se los asignas al objeto canvas, no a el contexto gráfico, es decir que para el DOM el canvas es otro objeto más que puedes obtener con getElementById por ejemplo, el contexto es por así decirlo el que te permite dibujar sobre él, pero no es un objeto propio del DOM, porque no tiene eventos, existe sólo si lo invocas con getContext
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: canvas, eventos, funcion, html, input, jquery, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:18.