图像数组 p5.js
Image array p5.js
我创建了一些嵌套数组来显示图像数组,有一点我做错了,它重复相同的图像而不是在每个循环中绘制一个新图像。
这是我的示例代码模拟我的问题
var images = [];
function preload() {
for (var i = 0; i< 3; i++) {
images[i] = loadImage("img/img" + i + ".jpg");
}
}
function setup() {
createCanvas(900, 900);
background(0);
preload();
}
function draw() {
//image(images[0],0,0);
for ( var y= 0; y < height; y=y+300) {
for ( var x =0; x < width; x=x+300) {
for ( var z = 0; z < 3; z++) {
image(images[z], x, y );
}
}
}
}
作为图片,我只用了其中 3 个 300x300 的 jpg 来测试。
我可能错了,但快速阅读您的代码,您似乎在绘制 3 张图像:
image(images[z], x, y );
您可以在该行之前或之后添加 console.log(x,y);
以仔细检查。
总的来说,您正在做一个网格,您可能希望该网格的每个元素都是您预加载的图像,但您需要 space 稍微将它们取出:
image(images[z], x + images[z].width * z, y );
这很快而且很麻烦,但您实际上可以算出您需要多少间距:total width / (image width + image spacing) = spacing per image
,假设加载的图像大小相同
另一种选择可能是循环浏览数组中的图像:
function draw() {
var i = 0;
//image(images[0],0,0);
for ( var y= 0; y < height; y=y+300) {
for ( var x =0; x < width; x=x+300) {
//using % to loop back to the first element after the array length
image(images[i % images.length], x, y );
i++
}
}
}
请注意,上面的代码还没有经过测试,但希望它足够容易理解以适应
我创建了一些嵌套数组来显示图像数组,有一点我做错了,它重复相同的图像而不是在每个循环中绘制一个新图像。
这是我的示例代码模拟我的问题
var images = [];
function preload() {
for (var i = 0; i< 3; i++) {
images[i] = loadImage("img/img" + i + ".jpg");
}
}
function setup() {
createCanvas(900, 900);
background(0);
preload();
}
function draw() {
//image(images[0],0,0);
for ( var y= 0; y < height; y=y+300) {
for ( var x =0; x < width; x=x+300) {
for ( var z = 0; z < 3; z++) {
image(images[z], x, y );
}
}
}
}
作为图片,我只用了其中 3 个 300x300 的 jpg 来测试。
我可能错了,但快速阅读您的代码,您似乎在绘制 3 张图像:
image(images[z], x, y );
您可以在该行之前或之后添加 console.log(x,y);
以仔细检查。
总的来说,您正在做一个网格,您可能希望该网格的每个元素都是您预加载的图像,但您需要 space 稍微将它们取出:
image(images[z], x + images[z].width * z, y );
这很快而且很麻烦,但您实际上可以算出您需要多少间距:total width / (image width + image spacing) = spacing per image
,假设加载的图像大小相同
另一种选择可能是循环浏览数组中的图像:
function draw() {
var i = 0;
//image(images[0],0,0);
for ( var y= 0; y < height; y=y+300) {
for ( var x =0; x < width; x=x+300) {
//using % to loop back to the first element after the array length
image(images[i % images.length], x, y );
i++
}
}
}
请注意,上面的代码还没有经过测试,但希望它足够容易理解以适应