2016-07-01 15 views
-2

シンプルなJSキャンバスを作成しようとしましたが、描画しませんでした。私がDev ConsoleからchromeでrenderCanvas()を呼び出すと、それは動作しますが、コードで呼び出すと動作しません。なぜどんなアイデア?私は絵があることを確信している...JS関数呼び出しは機能しません

<!DOCTYPE html> 
<html> 
<head> 
    <title>JSolitaire</title> 
</head> 
<body> 
    <canvas id="canvas" width="640" height="480"></canvas> 
    <script> 
    renderCanvas(); 
    var canvas = document.getElementById("canvas"); 
    var ctx = canvas.getContext("2d"); 
    var bgReady = false; 
    var bgImage = new Image(); 
    bgImage.src = "background.png"; 
    bgImage.onload = new function(){ 
     bgReady = true; 
    }; 

    function renderCanvas(){ 
     if(bgReady) 
      ctx.drawImage(0, 0, bgImage); 
    }; 
    </script> 
</body> 
</html> 
+3

なぜ' new'キーワードを行うことができますbgReadyを使用することのない点はありませんか? – trincot

+0

最初の呼び出しとしてrenderCanvsがあり、バックグラウンドの読み込みも開始していません。画像がロードされるのを待たなければならないので、onload関数にrenderCanvasを入れてみてください。 – Blindman67

答えて

1

あなただけfunction` `前にこの

var canvas = document.getElementById("canvas"); 
var ctx = canvas.getContext("2d"); 
var bgImage = new Image(); 
bgImage.src = "background.png"; 
bgImage.onload = function() { 
    renderCanvas(); 
}; 
function renderCanvas() { 
    ctx.drawImage(bgImage, 0, 0); 
}; 
+0

これはうまくいきますが、bgImageをdrawImageの1番目のパラメータとして追加しなければなりませんでした:ctx.drawImage(bgImage、0、0); – Airborne

+0

ちょうど、それはctx.drawImage(image、dx、dy)でなければならない関数をチェックしました。ありがとうございます。 – WinterCore

+0

@WinterCore。うわー、あなたはそれがコンソールからうまくいったと教えてくれましたか?どのようにすることができますか? – trincot

関連する問題