2016-03-25 17 views
-2

HTML/JavaScript ile oyun yapıyorum. Oyun MineCraft gibi olacak, ama 2D. Çalışmayan kod, blokları oluşturmak içindir. Tüm değişkenler ayarlandı, ancak size verdiğim kodda gösterilmiyor. Bu kod çalışma, ama şimdi değilJavaScript Oyun TürüMismatchError

for(var key in blocks){ 
    context.drawImage(blocks[key].img, blocks[key].x, blocks[key].y, size, size); 
    if(collision(blocks[key], player)) context.fillText("COLLISION", 200, 20); 
} 

TypeMismatchError context.drawImage yönteme geçirilen ilk bağımsız yanlış olduğunda görünebilir context.drawImage(blocks[key].img, blocks[key].x, blocks[key].y, size, size);

cevap

2

Bu yanlıştır. Yalnızca Görüntü nesneleri, tuval veya video öğeleri ilk parametre olarak iletilebilir.

Görüntünüzün, drawImage kullanarak tuval üzerine çizmeden önce yüklendiğinden emin olun. Aşağıdaki örnekte img.grass.onload yöntemine dikkat edin. Görüntü varlığının çizim için kullanılabilir olmasını sağlar:

var img = {}; 
img.grass = new Image(); 
img.grass.src = "grass.jpg"; 
img.grass.onload = function() { 
    for (i = 0; i < 10; i++){ 
    for (j = 0; j < 10; j++){ 
     context.drawImage(img.grass, j*50, i*50, 50, 50); 
    } 
    } 
} 
+0

teşekkürler, ancak bu bir resim nesnesidir. –

+0

, görüntüyü oluşturmanın kodudur. img.grass = yeni Görüntü(); img.grass.src = "img/grass.png"; blok = img.grass; var asd = { \t \t \t x: Math.round (player.x/boyutu) * boyut, \t \t \t y: Math.round (player.y/boyutu) * boyut 10, \t \t \t img: blok, \t \t \t id: Math.random() * 100 \t \t}; \t \t bloklar [asd.id] = asd; HOPE YARDIM –

+0

Düzenlenen cevapta 'yük 'yöntemini kontrol edin. – Darkseeds