2012-09-12 16 views
6

Niedawno zacząłem dabblingować w HTML5/Javascript, a obecnie próbuję stworzyć prostą grę w blackjacka. Moja główna przeglądarka to Chrome i zauważyłem, że funkcja rysowania kart nie działa. Upraszczałem trochę kod, ale funkcja drawImage() nadal nie wyświetlała niczego na ekranie.html5 drawImage działa w firefoxie, a nie w chrome

$(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); 

} 

Teraz, gdy uruchomię to w Chrome, otrzymam ramkę narysowaną przez kontekst, ale NIE rysuję obrazu. Jednak po uruchomieniu go w przeglądarce Firefox obraz i pudełko są wyświetlane poprawnie. Z tego co mogę powiedzieć, że Firefox i Chrome obsługują zarówno płótno HTML5, jak i; wszelkie pomysły, dlaczego nie będzie działać w Chrome?

Odpowiedz

17

Spróbuj napisać zamiast context.drawImage(...) tym:

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

+1, miałem odpowiedzieć na tę samą – Roman

+0

Mógłbyś rozwinąć odpowiedź, aby wyjaśnić dlaczego * * To rozwiązuje problem proszę? –

+4

Rozwiązuje to problem, ponieważ przypisujesz tylko źródło obrazu. To jest po prostu wiadomość do przeglądarki, aby przejść i rozpocząć pobieranie wiadomości. Tak więc obraz nie jest naprawdę obecny w przeglądarce podczas próby narysowania. To, co zrobił mikrokomputer, to to, że przydzielił do niego obsługiwany moduł ładujący, co w prostych słowach oznacza wywołanie metody drawImage dopiero po tym, jak obraz został faktycznie przywrócony i jest dostępny w przeglądarce. – Romin

Powiązane problemy