2012-09-12 12 views
6

Recientemente comencé a incursionar en HTML5/Javascript, y actualmente estoy tratando de armar un simple juego de blackjack. Mi navegador principal es Chrome, y noté que mi función de dibujo para tarjetas no funcionaba. Simplifiqué un poco el código, pero la función drawImage() todavía no parecía poner nada en la pantalla.html5 drawImage funciona en firefox, no en cromo

$(document).ready(function(){ 
init(); 
}); 

function init(){ 
setCanvas(); 
} 

function setCanvas(){ 
var canvas = document.getElementById("game-canvas"); 
var context = canvas.getContext("2d"); 
canvas.width = 800 
canvas.height = 600 
context.fillStyle = "#004F10"; 
context.fillRect(0,0,800,600); 
var back = new Image(); 
back.src = "testermed.png" 
context.drawImage(back,54,83); 

} 

Ahora cuando ejecuto esto en Chrome, aparece el recuadro dibujado por el contexto pero NO la imagen dibujada. Sin embargo, cuando lo ejecuto en Firefox, la imagen y el cuadro aparecen bien. Por lo que puedo decir, Firefox y Chrome son compatibles con el lienzo HTML5 por igual; ¿Alguna idea de por qué no funcionará en Chrome?

Respuesta

17

tratar de escribir en lugar de context.drawImage(...) esto:

back.onload = function() { 
    context.drawImage(back, 54, 83); 
} 
+0

+1, yo estaba a punto de responder a la misma – Roman

+0

Podría ampliar la respuesta a explicar por qué * * esto soluciona el problema por favor? –

+4

Esto soluciona el problema porque solo está asignando el origen de la imagen. Eso es solo un mensaje al navegador para ir y comenzar a recuperar el mensaje. Entonces, la imagen no está realmente allí con el navegador cuando intentas dibujarla. Lo que ha hecho micnic es que le ha asignado el controlador de carga, que en palabras simples significa que invoca el drawImage solo una vez que la imagen ha sido restringida y está disponible con el navegador. – Romin

Cuestiones relacionadas