Foros del Web » Creando para Internet » HTML »

Canvas - la imagen me deja un rastro

Estas en el tema de Canvas - la imagen me deja un rastro en el foro de HTML en Foros del Web. Hola compañeros, soy nuevo en el foro y a ver si me podeis ayudar en mi problema. Estoy haciendo un ejercicio de canvas que mueve ...
  #1 (permalink)  
Antiguo 14/03/2013, 09:38
 
Fecha de Ingreso: marzo-2013
Ubicación: Córdoba
Mensajes: 29
Antigüedad: 11 años, 1 mes
Puntos: 0
Información Canvas - la imagen me deja un rastro

Hola compañeros, soy nuevo en el foro y a ver si me podeis ayudar en mi problema.
Estoy haciendo un ejercicio de canvas que mueve una imagen que he insertado. El problema es que cuando se mueve deja un rastro de imagen.
He probado el clearRect pero claro de fondo tengo una imagen y si pongo el clearRect se me pone todo blanco y no se ve el fondo.
Os dejo una captura de mi problema y mi código por si me pudieran ayudar.
Muchas gracias.

IMAGEN DEL PROBLEMA:



CODIGO:

<html>
<head>
<meta charset="UTF-8">
<title>Canvas 2</title>
</head>
<style>
#capa {
margin-left: 0px;
margin-top: 0px;
border: 1px solid black;
}
</style>
<script>

var block;

function fondo(){

block = document.getElementById("capa").getContext("2d");

var img = new Image();
img.src = "imagenes/playa.jpg";

img.onload = function() {
block.drawImage(img, 0, 0,800,400);

}
}

function Animacion(){


block = document.getElementById("capa").getContext("2d");
var img2 = new Image();
img2.src="imagenes/barco.png";
var x=0;

setInterval(function(){
block.drawImage(img2,x,150,100,100);
if(x>800){
document.getElementById("capa2").innerHTML = "<input type='button' value='Pasar de escena'>";
}
x++;
},1);
}


</script>
<body onload="fondo();Animacion();">
<canvas id="capa" width="800" height="400"></canvas>
<div id="capa2"></div>
<br>
<a href="index2.html">
</a>
</body>
</html>
  #2 (permalink)  
Antiguo 16/03/2013, 12:07
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Canvas - la imagen me deja un rastro

A mi me paso lo mismo, no pude solucionarlo.

La mejor solucion que encuentro es usar varios canvas

por ejemplo en un canvas pones el paisaje y en otro(s) el/los elemento(s) que vas a poner, osea que vas a usar draganddrop

si solo es mover hasta aqui tienes la solucion

pero si deseas generar una imagen final(la combinacion del paisaje mas los elementos que moviste)

deberas obtener las coordenadas de los elementos y luego con drawimage los pintas en los lugares especificos

para obtener la imagen utilizas todataurl

salu2
  #3 (permalink)  
Antiguo 20/03/2013, 06:47
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: Canvas - la imagen me deja un rastro

Buenas,

es que no hay que olvidar que canvas es persistente, es decir todo lo que vas pintando en él se va añadiendo a lo que ya haya. Para sustituirlo deberás volver a pintar el canvas entero por cada movimiento lo que a veces puede ser muy costoso en cuanto a recursos o usar zonas de recorte. Podrías poner el setInterval fuera de Animacion con una función que lo que haga es llamar a fondo y a Animacion pasándole la coordenada del barco a mover para cada iteración

Etiquetas: canvas, html5
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 15:54.