2012-09-12 55 views
6

Tôi vừa mới bắt đầu sử dụng HTML5/Javascript và hiện đang cố gắng kết hợp một trò chơi blackjack đơn giản. Trình duyệt chính của tôi là Chrome và tôi nhận thấy chức năng vẽ của mình cho thẻ không hoạt động. Tôi đã đơn giản hóa mã một chút, nhưng hàm drawImage() vẫn không có vẻ để đặt bất cứ thứ gì trên màn hình.html5 drawImage hoạt động trong firefox, chứ không phải 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); 

} 

Bây giờ khi tôi chạy trong Chrome, tôi nhận được hộp được vẽ theo ngữ cảnh nhưng KHÔNG được vẽ hình. Tuy nhiên khi tôi chạy nó trong Firefox hình ảnh và hộp chỉ hiển thị tốt. Từ những gì tôi có thể nói cho Firefox và Chrome đều hỗ trợ HTML5 canvas như nhau; bất kỳ ý tưởng nào về lý do tại sao nó không hoạt động trên Chrome?

Trả lời

17

Cố gắng viết thay vì context.drawImage(...) này:

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

+1, tôi sắp sửa trả lời giống nhau – Roman

+0

Ông có thể mở rộng câu trả lời để giải thích lý do tại sao * * này sửa chữa vấn đề xin vui lòng? –

+4

Việc này sẽ khắc phục sự cố vì bạn chỉ đang chỉ định nguồn hình ảnh. Đó chỉ là một thông báo cho trình duyệt để đi và bắt đầu lấy tin nhắn. Vì vậy, hình ảnh không thực sự ở đó với trình duyệt khi bạn cố vẽ nó. Những gì micnic đã làm là anh ta đã gán bộ xử lý tải cho nó, mà trong những từ đơn giản có nghĩa là chỉ gọi drawImage khi hình ảnh đã thực sự được khôi phục và có sẵn với trình duyệt. – Romin

Các vấn đề liên quan