2017-09-24 13 views
0

キャンバスに問題があります。たとえば、私の画像の代わりに黒い四角が1/10の時間、クロムにあるとしましょう。私のコードは以下の通りですが、この黒い表示を避けるためにどうすれば変更できますか?画像の代わりに黒いキャンバス

<canvas id="Canvas" width="954" height="267"></canvas> 

<script> 

var canvas = document.getElementById('Canvas'); 
var context = canvas.getContext("2d"); 

// Map sprite 
var mapSprite = new Image(); 
mapSprite.src = 'image.png'; 

var main = function() { 
    draw(); 
}; 

var draw = function() { 
    // Clear Canvas 
    context.fillStyle = "#000"; 
    context.fillRect(0, 0, canvas.width, canvas.height); 

    // Draw diagramme 
    context.drawImage(mapSprite, 0, 0, 954, 267); 
} 

main(); 
</script> 

EDIT 1:フル機能のドロー:私はあなたがイメージがロードされるまで待つようにしたいと考えてい

var draw = function() { 
    // Clear Canvas 
    context.fillStyle = "#000"; 
    context.fillRect(0, 0, canvas.width, canvas.height); 

    // Draw diagramme 
    context.drawImage(mapSprite, 0, 0, nextWidth, nextHeight); 

    //draw all precedent cross 
    cross = new Image(); 
    cross.src = "cross.png"; 

    for (var i = 0; i < array_x.length; i++) { 
    context.drawImage(cross, array_x[i], array_y[i], 10, 10); 
    } 
} 
+0

を画像がロードされるのを待つのか?末尾に 'main()'の代わりに 'mainSprite.onload = main'を実行してください。 – towc

答えて

1

は交換してください:付き

main(); 

mapSprite.addEventListener('load', main); 
+0

この回答に感謝します。それは画像の問題を解決するようです。実際には、私の機能は少し複雑です(EDIT 1)。私は座標を含む2つの配列を持っているし、それらを画像上にプロットしたい。あなたの解決策では、私のイメージがありますが、私は自分の座標(十字)を持っていません。 – ranell

+0

@ranell質問に答えました。新しい質問がある場合は、新しい質問を作成してください。推奨事項:問題を再現するためにjsfiddleを作成します。今質問は自己完結型ではありません。 –

関連する問題