我有以下 JavaScript 代码,我用它来尝试遍历一组图像,并将每个图像绘制到不同位置的 HTML5 画布上:
/*First, create variables for the x & y coordinates of the image that will be drawn.
the x & y coordinates should hold random numbers, so that the images will be
drawn in random locations on the canvas.*/
var imageX = Math.floor(Math.random()*100);
var imageY = Math.floor(Math.random()*100);
/*Create a 'table' of positions that the images will be drawn to */
var imagePositionsX = [20, 80, 140, 200, 260, 320, 380, 440, 500, 560];
var imagePositionsY = [20, 60, 100, 140, 180, 220, 260, 300, 340, 380];
var randomPositionX = Math.floor(Math.random()*10);
var randomPositionY = Math.floor(Math.random()*10);
/*Draw all images from assetsImageArray */
/*Use a while loop to loop through the array, get each item and draw it. */
var arrayIteration = 0;
console.log('Assets Image Array length: ' + assetsImageArray.length); /*Display the length of the array in the console, to check it's holding the correct number of images. */
while(arrayIteration < assetsImageArray.length){
context.drawImage(assetsImageArray[arrayIteration], imageX, imageY, 50, 50);
console.log(arrayIteration); /*Display the current array position that's being drawn */
arrayIteration = arrayIteration+1;
/*Now try changing the values of imageX & imageY so that the next image is drawn to a
different location*/
imageX = imagePositionsX[randomPositionX]; /* imageX+(Math.floor(Math.random()*100)); */
imageY = imagePositionsY[randomPositionY]; /* imageY+(Math.floor(Math.random()*100)); */
}
此代码背后的预期逻辑是:首先将 arrayIteration 变量设置为 0,然后在控制台中显示我的 assetsImageArray 中的图像数量。然后while循环开始-当arrayIteration变量小于assetsImageArray中的项目数时,assetsImageArray的arrayIteration位置(即此时位置0)的图像应该被绘制到坐标imageX和imageY的画布上。
imageX 和 imageY 变量都保存由代码分配给它们的随机数。Math.floor(Math.random()*100);
在将第一张图像绘制到画布的指定位置后,控制台应该记录刚刚绘制的数组元素。
下一行应该增加 arrayIteration 变量,最后,应该通过分别从数组 imagePositionsX 和 imagePositionsY 中获取随机元素的值来更新 imageX 和 imageY 的值。
while 循环将遍历此代码,将 assetsImageArray 中的每个图像绘制到画布上的新位置,直到绘制完数组中的所有图像。
但是,由于某种原因,只有 assetsImageArray 中的第一张和最后一张图像被绘制到画布上。它们被绘制在随机位置 - 这是我想要的,每次我重新加载页面时,它们都会被绘制到画布上的新位置,但我无法弄清楚为什么数组中没有图像在第一个位置之间最后被绘制到画布上。我认为我的逻辑在某处有问题,但无法弄清楚在哪里。
有没有人能发现它?