2012-09-12 17 views
6

मैंने हाल ही में एचटीएमएल 5/जावास्क्रिप्ट में डबलिंग शुरू कर दी है, और वर्तमान में एक साधारण ब्लैकजैक गेम को एक साथ रखने की कोशिश कर रहा हूं। मेरा मुख्य ब्राउज़र क्रोम है, और मैंने देखा होगा कि कार्ड के लिए मेरा ड्रॉ फ़ंक्शन काम नहीं कर रहा था। मैंने कोड को थोड़ा सा सरल बना दिया, लेकिन drawImage() फ़ंक्शन अभी भी स्क्रीन पर कुछ भी नहीं लग रहा था।html5 drawImage फ़ायरफ़ॉक्स में काम करता है, क्रोम

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

} 

अब जब मैं इसे क्रोम में चलाता हूं, तो मुझे संदर्भ द्वारा खींचा गया बॉक्स मिलता है लेकिन छवि खींची नहीं जाती है। हालांकि जब मैं इसे फ़ायरफ़ॉक्स में चलाता हूं तो छवि और बॉक्स ठीक दिखता है। मैं फ़ायरफ़ॉक्स और क्रोम को बता सकता हूं कि दोनों ही एचटीएमएल 5 कैनवास का समर्थन करते हैं; किसी भी विचार के रूप में यह क्रोम पर क्यों काम नहीं करेगा?

उत्तर

17

context.drawImage(...) इस के बजाय लिखने के लिए प्रयास करें:

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

+1, मैं के बारे में एक ही जवाब – Roman

+0

आप का विस्तार कर सके समझाने के लिए * क्यों * इससे समस्या हल हो कृपया जवाब देने के लिए था? –

+4

यह समस्या को हल करता है क्योंकि आप केवल छवि स्रोत असाइन कर रहे हैं। ब्राउज़र पर जाने और संदेश को पुनः प्राप्त करने के लिए यह सिर्फ एक संदेश है। तो जब आप इसे आकर्षित करने का प्रयास करते हैं तो छवि वास्तव में ब्राउजर के साथ नहीं होती है। क्या माइकनिक ने किया है कि उसने लोड लोड हैंडलर को सौंपा है, जो सरल शब्दों में है कि चित्र को वास्तव में पुनर्स्थापित करने के बाद ही ड्रा इमेज का आह्वान किया जाता है और ब्राउज़र के साथ उपलब्ध होता है। – Romin

संबंधित मुद्दे