【发布时间】:2015-09-20 22:22:36
【问题描述】:
我正在做一个练习,该练习涉及基于一系列书籍对象在画布上绘制书架。具体说明如下:
现在添加更多书籍,并使用循环在画布下方绘制更多书架。想想如何使用条件和/或 % 运算符来做到这一点。
我的代码在循环中包含一个条件,但我似乎无法让它工作。条件在下面代码的最后。
//book array
var books = [{
title: "The Giver",
author: "Lois Lowry",
coverColor: color(214, 255, 219),
stars: 3
}, {
title: "The Outsiders",
author: "S. E. Hinton",
coverColor: color(255, 127, 127),
stars: 5
}, {
title: "Harry Potter",
author: "J. K. Rowling",
coverColor: color(135, 193, 255),
stars: 4
}, {
title: "Harry Potter",
author: "J. K. Rowling",
coverColor: color(135, 193, 255),
stars: 4
}];
// draw shelf
background(230, 187, 122);
fill(173, 117, 33);
rect(0, 120, width, 10);
// book loop
for (var i = 0; i < books.length; i++) {
var book = books[i]; //setting book variable
var xPos = i * 100;
var yPos = 20;
fill(book.coverColor);
rect(xPos + 10, yPos, 90, 100);
fill(0, 0, 0);
textSize(11); //general book drawings
text(book.title, xPos + 15, yPos + 5, 70, 100);
textSize(9);
text(book.author, xPos + 20, yPos * 2, 70, 100);
//Seal of approval
if (book.stars > 3) {
var approvalSeal = getImage("cute/Star");
image(approvalSeal, xPos + 10, yPos * 4, 30, 40);
text("Seal of approval!", xPos + 45, yPos * 4 + 15, 50, 40);
}
//conditional wrap-around
if (xPos > 350) {
xPos = i * 100;
yPos += 120;
}
}
【问题讨论】:
标签: javascript canvas processing