2016-11-16 2 views
0
var canvas = document.getElementById("canvas"); 
var surface = canvas.getContext("2d"); 

//creating tile 
var box = {}; 
box.x = 0; 
box.y = 0; 
box.img = new Image(); 
box.img.src = "box_image.png"; 
box.img.height = "64"; 
box.img.width = "64"; 

console.log(box.img.width); 
//set delay to draw boxes 
setTimeout(drawBoxes, 10); 

//drawing tile 
function drawBoxes() { 
    surface.drawImage(box.img, box.x, box.y); 

} 

イメージオブジェクトの幅と高さを変更しても、イメージのサイズが変わっていないように見えます。画像は400x400の.pngですが、私は64x64のボックスにしたいと思っています。Imageオブジェクトの幅と高さを設定できないのはなぜですか?

また、drawImageのsetTimeout関数をキャンバスに配置する必要があることに気付きました。遅延がなければ、画像は表示されません。なぜこれが起こるのか説明できますか?

+0

に幅と高さを渡します。他のオーバーロードされたdrawImageメソッドを見てみましょう。 – 11thdimension

+0

@ 11thdensionそれが唯一の方法ですか?私は教授が幅と高さを別々に設定しているのを覚えているようです。 – PixelProgrammer

+0

'描画遅延を設定する' - このヒットとミスの代わりに 'box.img.addEventListener( 'load'、drawBoxes)'を使う10ミリ秒のタイムアウト –

答えて

1

は、あなたがどこにも幅/高さの値を使用していないdrawImage

surface.drawImage(box.img, box.x, box.y, box.img.width, box.img.height); 
関連する問題