JavaScriptを使用して一連の画像をHTML5キャンバスに描画したいと思います。次のwhileループがあり、すべての画像をキャンバスに描画することを望んでいましたが、現在は最初の画像のみを描画しています。
function drawLevelOneElements(){
/*First, clear the canvas */
context.clearRect(0, 0, myGameCanvas.width, myGameCanvas.height);
/*This line clears all of the elements that were previously drawn on the canvas. */
/*Then redraw the game elements */
drawGameElements();
/*Draw the elements needed for level 1 (26/04/2012) */
var fileName = 1;
var imagePositionX = 20;
var imagePositionY = 30;
while(fileName < 11){
/*Create an array of images here, move to next element of array on each iteration */
var numbers = new Array();
numbers[0] = "1.png"
numbers[1] = "2.png"
numbers[3] = "3.png"
numbers[4] = "4.png"
numbers[5] = "5.png"
image.src = fileName+".png";
image.src = numbers[0];
image.onload = function(){
context.drawImage(image, imagePositionX, imagePositionY, 50, 50);
}
fileName = fileName+1;
imageY = imageY+20;
console.dir(fileName); /* displays in the console- helpful for debugging */
}
この関数が何をすることを望んでいたかについて話すために:
各画像を配列の異なる要素にロードします(したがって、1.pngはnumbers [0]になり、2.pngはnumbers [1]になります)。
次に、グローバル変数'image'を取得し、そのソースをnumbers[0]のコンテンツに割り当てます。
次に、キャンバス上の指定された位置にその画像を描画します。
次に、変数fileNameの値を1ずつインクリメントし、値を「2」にします。
次に、Y座標の値をインクリメントし、キャンバス上に画像を20ピクセル描画します。描画する画像の位置を20ピクセル下に移動します。
その後、ループの最初に戻り、キャンバス上の最初に描画された画像の位置から20ピクセル下の位置に次の画像(2.png)を描画します。
変数'fileName'の値が11未満の間、これを継続する必要があります。つまり、最後に描画された画像の下に、新しい画像ごとに10枚の画像を描画する必要があります。
しかし、どういうわけか、私の関数は最初の画像しか描画しません。誰かが私が間違っていることを指摘できますか、そしてどうすればこれを修正できますか?
どうもありがとう。