2012-09-12 17 views
6

私は最近、HTML5/Javascriptでダブリングを開始しました。現在、単純なブラックジャックゲームをまとめようとしています。私の主なブラウザはChromeで、カード用の描画機能が動作していないことに気付きました。私はコードをかなり単純化しましたが、drawImage()関数はまだ何も画面に表示していないようでした。html5 drawImageはchromeではなくfirefoxで動作します

$(document).ready(function(){ 
init(); 
}); 

function init(){ 
setCanvas(); 
} 

function setCanvas(){ 
var canvas = document.getElementById("game-canvas"); 
var context = canvas.getContext("2d"); 
canvas.width = 800 
canvas.height = 600 
context.fillStyle = "#004F10"; 
context.fillRect(0,0,800,600); 
var back = new Image(); 
back.src = "testermed.png" 
context.drawImage(back,54,83); 

} 

これをChromeで実行すると、ボックスがコンテキストで描画されますが、描画される画像は描画されません。しかし、私はFirefoxでそれを実行すると、画像とボックスが正常に表示されます。私がFirefoxとChromeの両方がHTML5キャンバスを同等にサポートしていると言うことから、なぜそれがクロームで動作しないのかについてのアイデアはありますか?

答えて

17

context.drawImage(...)の代わりにこの書き込みをしてみてください:

back.onload = function() { 
    context.drawImage(back, 54, 83); 
} 
+0

+1を、私はあなたが*これは問題を修正する理由*してください説明して答えを拡張でし同じ – Roman

+0

に答えるとしていましたか? –

+4

イメージソースのみを割り当てているため、この問題は解決します。これは、ブラウザにメッセージの取得を開始するメッセージです。あなたがそれを描画しようとすると、イメージは実際にブラウザではありません。どのような微調整が行われたかは、オンロードハンドラが割り当てられているということです。単純に言えば、イメージが実際に再構築され、ブラウザで利用できるようになるとdrawImageを呼び出すということです。 – Romin

関連する問題