Foros del Web » Programando para Internet » Javascript »

cargar imagen en canvas con prototype(no me sale)

Estas en el tema de cargar imagen en canvas con prototype(no me sale) en el foro de Javascript en Foros del Web. No sé porque no me aparece la imagen , he revisado bien el codigo y no veo ningun problema o no sé, ojala me puedan ...
  #1 (permalink)  
Antiguo 24/10/2014, 15:10
 
Fecha de Ingreso: agosto-2013
Ubicación: Lima
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Exclamación cargar imagen en canvas con prototype(no me sale)

No sé porque no me aparece la imagen , he revisado bien el codigo y no veo ningun problema o no sé, ojala me puedan ayudar:

Código HTML:
Ver original
  1. <canvas id="c" width="600"  height="600"></canvas>

Código Javascript:
Ver original
  1. var lienzo, cxt;
  2.  
  3.         lienzo = document.getElementById("c");
  4.         cxt = lienzo.getContext("2d");
  5.  
  6.         var cargaImagen = function(dondeEstoy)
  7.         {
  8.             this.imagen = new Image();
  9.             this.imagen.src = dondeEstoy;
  10.             this.imagen.onload = subeImagen;
  11.         }
  12.  
  13.         cargaImagen.prototype.subeImagen = function ()
  14.         {
  15.             this.cxt.drawImage(this.imagen,0,0);
  16.         }
  17.  
  18.         var gato = new cargaImagen("imagen.jpg");

No me sale la imagen y me sale en la consola

Código:
Uncaught ReferenceError: subeImagen is not defined  
He probado al dibujar (drawImage) quitando el this o el cxt , pero no me sale la imagen aun , también he probado con variables globales y nada ... no entiendo porque me pasa esto.
  #2 (permalink)  
Antiguo 25/10/2014, 05:29
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: cargar imagen en canvas con prototype(no me sale)

La propiedad subeImagen la estás definiendo en el prototipo de cargaImagen, por lo tanto no puedes accederla de esa forma.
  #3 (permalink)  
Antiguo 25/10/2014, 09:17
 
Fecha de Ingreso: agosto-2013
Ubicación: Lima
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: cargar imagen en canvas con prototype(no me sale)

Cita:
Iniciado por PHPeros Ver Mensaje
La propiedad subeImagen la estás definiendo en el prototipo de cargaImagen, por lo tanto no puedes accederla de esa forma.
Cuál sería la forma correcta entonces de hacerlo con prototype..?? disculpa la ignorancia.. saludos.
  #4 (permalink)  
Antiguo 25/10/2014, 10:08
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: cargar imagen en canvas con prototype(no me sale)

Cita:
Iniciado por Toshirou Ver Mensaje
Cuál sería la forma correcta entonces de hacerlo con prototype..?? disculpa la ignorancia.. saludos.
Código:
this.imagen.onload = this.subeImagen;
  #5 (permalink)  
Antiguo 25/10/2014, 11:21
 
Fecha de Ingreso: agosto-2013
Ubicación: Lima
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: cargar imagen en canvas con prototype(no me sale)

Cita:
Iniciado por PHPeros Ver Mensaje
Código:
this.imagen.onload = this.subeImagen;
Bueno .. igual no me sale la imagen. Me sale un error:

Código:
Uncaught TypeError: Cannot read property 'drawImage' of undefined 
Probé quitando el 'this' del drawImage y me sale otro error:

Código:
Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': No function was found that matched the signature provided. 
No entiendo porque, ya intenté muchas formas y nada... ejecutando al ultimo ( gato.subeImagen() ) y nada .. podrías probar tu y me pasas el codigo que te funcione por favor.
  #6 (permalink)  
Antiguo 25/10/2014, 11:52
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: cargar imagen en canvas con prototype(no me sale)

buenas...
@toshirou, creo que deberias leer más teoría acerca de prototype porque me parece que estas dando palos de ciego. estas cometiendo un error similar al anterior. en la web hay muuuuuuuuuucho material al respecto: prototipos vs clases, ejemplos de prototipos y herencia, entendiendo los prototipos en javascript, y un largo etc.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 27/10/2014, 17:50
Avatar de jp91  
Fecha de Ingreso: mayo-2014
Mensajes: 94
Antigüedad: 9 años, 11 meses
Puntos: 11
Respuesta: cargar imagen en canvas con prototype(no me sale)

Ok algo sencillo quedaria asim pero si tienes que estudiar un poco mas, cuando declaras una variable como "cxt" esta es de ambito global no tienes que llamarla con "this" , y sobre prototypes hay si que tienes que practicar.

Código Javascript:
Ver original
  1. window.addEventListener('load',run,false);
  2.  
  3. var lienzo, contexto;
  4.  
  5.  
  6.             lienzo = document.getElementById("caja");
  7.             contexto = lienzo.getContext('2d');
  8.  
  9.  
  10.             function cargaImagen (dondeEstoy)
  11.             {
  12.                 this.imagen = new Image();
  13.                 this.imagen.src = dondeEstoy;
  14.  
  15.             };
  16.  
  17.             cargaImagen.prototype.subeImagen = function (contexto)
  18.             {
  19.  
  20.                contexto.drawImage(this.imagen,100,0);
  21.             };
  22.  
  23.          var gato = new cargaImagen("cualquiera.png");
  24.    
  25.          function run(){
  26.            gato.subeImagen(contexto);
  27.            }
__________________
OOoo Como hacer ooOO
juegos con Html5.
  #8 (permalink)  
Antiguo 28/10/2014, 12:05
 
Fecha de Ingreso: agosto-2013
Ubicación: Lima
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: cargar imagen en canvas con prototype(no me sale)

Cita:
Iniciado por jp91 Ver Mensaje
Ok algo sencillo quedaria asim pero si tienes que estudiar un poco mas, cuando declaras una variable como "cxt" esta es de ambito global no tienes que llamarla con "this" , y sobre prototypes hay si que tienes que practicar.

Código Javascript:
Ver original
  1. window.addEventListener('load',run,false);
  2.  
  3. var lienzo, contexto;
  4.  
  5.  
  6.             lienzo = document.getElementById("caja");
  7.             contexto = lienzo.getContext('2d');
  8.  
  9.  
  10.             function cargaImagen (dondeEstoy)
  11.             {
  12.                 this.imagen = new Image();
  13.                 this.imagen.src = dondeEstoy;
  14.  
  15.             };
  16.  
  17.             cargaImagen.prototype.subeImagen = function (contexto)
  18.             {
  19.  
  20.                contexto.drawImage(this.imagen,100,0);
  21.             };
  22.  
  23.          var gato = new cargaImagen("cualquiera.png");
  24.    
  25.          function run(){
  26.            gato.subeImagen(contexto);
  27.            }
Si me di cuenta que el this en el drawImage estaba mal y que en el onload faltaba el this... pero después de arreglar eso , igual no se dibujaba mi imagen... y solo lo dibuja usando el window.addEventListener("load") en donde ejecuta recien el metodo prototype.. pero me pregunto, porque no lo dibujó? si mi sintaxis después de arreglar, estaba bien..
  #9 (permalink)  
Antiguo 28/10/2014, 14:02
Avatar de jp91  
Fecha de Ingreso: mayo-2014
Mensajes: 94
Antigüedad: 9 años, 11 meses
Puntos: 11
Respuesta: cargar imagen en canvas con prototype(no me sale)

Lo que mencionas ya es cuestion como el navegador interpreta y todo eso, tu error es llamar a image.src antes de image.load, en esto siempre se deberia asegurar que todo ha sido cargado (window.onload) , si usas la figuras primitivas del canvas veras que tu codigo funciona pero cuando necesita cargar imagenes ps ya ves lo que pasa.
__________________
OOoo Como hacer ooOO
juegos con Html5.

Etiquetas: canvas
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 21:38.