2017-09-24 2 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> 

편집 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을 작성하여 문제를 재현하십시오. 지금 질문 자체가 포함되어 있지 않습니다. –

관련 문제