Para este tutorial hemos creado un cuadrado verde dentro de un canvas que al hacerle click ara un movimiento vertical hasta que se detiene.
Primero de todo crearemos el canvas en el html5 tamaño 500px x 500px en este tutorial és de vital importancia saber el tamaño del canvas:
<canvas id="canvas" height="500px" width="500px"> Su navegador no soporta Canvas! </canvas>A partir de aquí todo será JavaScript.
Lo primero que pondremos en el Js será el window.onload que és lo primero que se ejecutará al iniciar la página. Dentro del window.load pondré dos funciones que explicaré más abajo. El resultado sería este:
window.onload = function(){ dibujar(x,y,x2,y2); click(); };
function dibujar(x,y,x2,y2){ canvas = document.getElementById("canvas"); ctx = canvas.getContext("2d"); ctx.fillStyle = "green"; ctx.fillRect(x, y, x2, y2); ctx.fill(); }
function click(){ //Añadimos un addEventListener al canvas, para reconocer el click canvas.addEventListener("click", //Una vez se haya clickado se activará la siguiente función function(e){ /** Las siguientes 2 líneas lo que hacen és saber en que * parte del canvas se ha clickado. Si ha clickado dentro * del cuadrado se activará mover(). * La operación que utilizamos es restar la parte izquierda que sobra * des del canvas asta el explorador (cancas.offsetLeft) * con el click (e.clientY) */ if(e.clientX-canvas.offsetLeft > 200 && e.clientX-canvas.offsetLeft < 280){ //Aqui lo mismo que en la anterior sólo que miramos alto y //ancho del cuadrado if(e.clientY-canvas.offsetTop > 300 && e.clientY-canvas.offsetTop < 380){ //si ha clickado dentro del cuadro verde mover(); } } } ,false);}
function mover(){ //vamos restando la coordenada Y hasta un límite de 150 if(y>150){ y--; //es la encargada de llamar cada 10 milesimas a la funcion mover() //y así crear el efecto de movimiento setTimeout(mover,10); } //tendremos que ir limpiando el canvas //para evitar que se cree una columna //por culpa de que los cuadrados se vayan solapando limpiar(); //dibujamos el cuadrado otra vez con la coordenada Y modificada //la modificación la hemos creado más arriba dibujar(x,y,x2,y2); }
function limpiar(){ ctx.fillStyle = "white"; ctx.fillRect(0, 0, 500, 500); }
Para ver el ejemplo finalizado haga click en el siguiente botón:
No olviden escribir su comentario!!!
BUenas, podrias poner los valores que estas utilizando para x,y,ancho y alto a la hora de pintarlo con en la funcion dibujar(x,y,x2,y2);
ResponderEliminarSi no pienso q es mas complicado entender el ejercicio de lo necesario.
Gracias y una saludo.
Disculpa la tardanza! Lo escribo para los siguientes también! Gracias.
ResponderEliminarvar x = 200;
var y = 300;
var x2 = 80;
var y2 = 80;
var cont = 0;
en que parte va del codigo? a y puedes actualizar el ejemplo?
EliminarPARA QUE ES var cont = 0;?
EliminarMuy buenos tutos!! Gracias by: @4boot http://www.facebook.com/4boot
ResponderEliminarNo hay una forma de nombrar a cada objeto dentro de un canvas? por aquello de que si no es un cuadrado, a la hora de hacer el listener con las coordenadas es una movida...
ResponderEliminarNo, no es posible ya que es un lienzo. Pero si te lo montas bien puedes ir haciendo vectores guardándote las coordenada de los dibujo para luego localizarlos más rápidamente. Gracias
Eliminaractualiza el ejemplo no se ve!!!!
ResponderEliminarAca esta el ejemplo completo :)
ResponderEliminarvar x = 200;
var y = 300;
var x2 = 80;
var y2 = 80;
var cont = 0;
window.onload = function(){
dibujar(200, 300, 80, 80);
click();
};
function dibujar(x,y,x2,y2){
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
ctx.fillStyle = "green";
ctx.fillRect(x, y, x2, y2);
ctx.fill();
}
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
function click(){
//Añadimos un addEventListener al canvas, para reconocer el click
canvas.addEventListener("click",
//Una vez se haya clickado se activará la siguiente función
function(e){
/** Las siguientes 2 líneas lo que hacen és saber en que
* parte del canvas se ha clickado. Si ha clickado dentro
* del cuadrado se activará mover().
* La operación que utilizamos es restar la parte izquierda que sobra
* des del canvas asta el explorador (cancas.offsetLeft)
* con el click (e.clientY)
*/
if(e.clientX-canvas.offsetLeft > 200
&& e.clientX-canvas.offsetLeft < 280){
//Aqui lo mismo que en la anterior sólo que miramos alto y
//ancho del cuadrado
if(e.clientY - canvas.offsetTop > 300
&& e.clientY - canvas.offsetTop < 380){
//si ha clickado dentro del cuadro verde
mover();
}
}
}
,false);}
function mover(){
//vamos restando la coordenada Y hasta un límite de 150
if(y>0){
y--;
//es la encargada de llamar cada 10 milesimas a la funcion mover()
//y así crear el efecto de movimiento
setTimeout(mover,10);
}
//tendremos que ir limpiando el canvas
//para evitar que se cree una columna
//por culpa de que los cuadrados se vayan solapando
limpiar();
//dibujamos el cuadrado otra vez con la coordenada Y modificada
//la modificación la hemos creado más arriba
dibujar(x,y,x2,y2);
}
function limpiar(){
ctx.fillStyle = "white";
ctx.fillRect(0, 0, 500, 500);
}