Foros del Web » Programando para Internet » Javascript »

Lienzo dinámico con processing

Estas en el tema de Lienzo dinámico con processing en el foro de Javascript en Foros del Web. Buenas a todos! Estoy comenzando con processing y processing.js ya que lo que más me interesa es utilizarlo para la web. Me parece fantástico lo ...
  #1 (permalink)  
Antiguo 09/11/2012, 17:10
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 9 meses
Puntos: 7
Lienzo dinámico con processing

Buenas a todos!

Estoy comenzando con processing y processing.js ya que lo que más me interesa es utilizarlo para la web. Me parece fantástico lo que se puede hacer con esta librería.....pero ya me surgió una duda fatal que espero que alguien sepa responderme.

Ya que processing.js está pensado para ser utilizado en la web, la pregunta es: ¿hay alguna manera de hacer adaptable el tamaño del lienzo y el canvas para los diferentes formatos de pantallas?.

O dicho de otra manera ¿como se puede adaptar de manera dinámica el tamaño del canvas y el size del lienzo donde trabaja processing.js para que se adapte a las pantallas de los diferentes dispositivos web?

He leído algo de la documentación pero parece no haber una opción para esto, si alguien sabe alguna alternativa o truco se lo agradezco desde ya!

Saludos!
  #2 (permalink)  
Antiguo 09/11/2012, 17:38
Avatar de ClubIce  
Fecha de Ingreso: diciembre-2008
Mensajes: 216
Antigüedad: 16 años
Puntos: 2
Respuesta: Lienzo dinámico con processing

Pues básicamente lo que tienes que hacer es crear un nuevo canvas con las medidas que necesitas y reemplazarlo por el que estas utilizando actualmente
  #3 (permalink)  
Antiguo 09/11/2012, 19:06
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 9 meses
Puntos: 7
Respuesta: Lienzo dinámico con processing

Hola Clubice, muchas gracias por la respuesta, si no me equivoco vos decis de detectar el tipo de dispositivo y de ahi redireccionar a una página con el Canvas en su tamaño apropiado.

Pero yo pregunto si hay alguna manera de que se vaya adaptando dinámicamente como lo hacen los divs cuando tienen el tamaño expresado en porcentaje....nose si me explico? que a medida que voy reduciendo la ventana del navegador se va adaptando.
  #4 (permalink)  
Antiguo 09/11/2012, 19:27
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años, 8 meses
Puntos: 131
Respuesta: Lienzo dinámico con processing

debes usar responsive web design.

@media(max-width min-width)
{
medida del canvas
}

y pintar con porcentajes en el canvas, me refiero a:

canvas.width / 100;
canvas.height / 100;

Saludos
  #5 (permalink)  
Antiguo 10/11/2012, 17:20
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 9 meses
Puntos: 7
Respuesta: Lienzo dinámico con processing

Hola Hackjose, gracias loco, estuve probando lo que me dijiste, pero hay un pequeño problema:

También necesito actualizar el tamaño del size que esta configurado en el void setup() del código processing. Sino lo que pasa es que redimensiono la pantalla y el dibujo se deforma o se pixela pero no se redibuja hasta que le doy F5

Y no encuentro manera de actualizar ese valor, ya que el size tiene que ser definido si o si en el void setup() y se ejecuta una sola vez
  #6 (permalink)  
Antiguo 11/11/2012, 13:04
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años, 8 meses
Puntos: 131
Respuesta: Lienzo dinámico con processing

Eso es lo que no me gusta de canvas, que hay que redibujar todo.

La solucion que encuentro es esta

usa la propiedad availwidth y availheight del objeto screen para conocer el tamaño disponible para el navegador y dependiendo de esto dibujas el canvas.

Tambien puedes usar el evento onresize para detectar cuando el usuario cambia el tamaño de la pagina hasta aqui hemos detectado el cambio de tamaño, para saber el tamaño puedes usar las propiedades innerWidth e innerHeight del objeto window y dependiendo de estas redibujas el canvas, por ejemplo

if(window.onresize)
{
width = window.innerWidth;
height = window.innerHeight;
ctx = document.getElementById("canvas").getContext('2d') ;
ctx.clearRect(ctx.width,ctx.height);
ctx.width = nuevo tamaño;
ctx.height = nuevo tamaño;
ctx.redibujar
}

Es algo largo pero creo que lo soluciona

La otra opcion que veo mas fiable es usar SVG

Saludos
  #7 (permalink)  
Antiguo 13/11/2012, 07:54
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 9 meses
Puntos: 7
Respuesta: Lienzo dinámico con processing

Bueno Hackjose muchas gracias por la ayuda!! seguiré probando...y si consigo algún resultado postearé aquí las novedades....saludos!

Etiquetas: js, lienzo
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 08:21.