我正在一個交互式文本分析網站上工作,我目前有一個for()循環運行在.txt文件中的一行數組。每一行生成一個矩形。它運行良好,但我需要能夠mouseOver/rollover每個方塊,然後打印網頁上的文本行。基本上,我只需要寫一些說如果mouseX + mouseY位於矩形的頂部,則將行[i]附加到html中的段落。p5.js:如何訪問for()循環中的元素以翻轉?
我仍然在掌握p5.js以及如何在我的sketch.js和html頁面之間跳轉。任何幫助將不勝感激!謝謝。
當前代碼
var book = [];
var lines = [];
var term1 = [];
var term2 = [];
var size;
var x;
var y;
function preload() {
book = loadStrings("data/01.txt");
}
function setup() {
createCanvas(windowWidth, windowHeight);
colorMode(HSB, 360, 100, 100, 100);
lines = splitTokens(book[0], ".?");
term1 = ["photography", "Photography", "PHOTOGRAPHY"];
term2 = ["art", "Art", "ART"];
size = 10;
x = 40;
y = 50;
noLoop();
noStroke();
rectMode(CENTER);
ellipseMode(CENTER);
background(0, 0, 100);
}
function draw() {
background(0, 0, 100);
for (var i = 0; i < lines.length; i++) {
x += size;
if (x >= windowWidth - 50) {
x = 40;
y += size;
}
// contains term 1 and term 2
if ((lines[i].indexOf(term1[0]) > 0 || lines[i].indexOf(term1[1]) > 0 || lines[i].indexOf(term1[02]) > 0) && (lines[i].indexOf(term2[0]) > 0 || lines[i].indexOf(term2[1]) > 0 || lines[i].indexOf(term2[2]) > 0)) {
fill(37, 87, 100);
} else if (lines[i].indexOf(term1[0]) > 0 || lines[i].indexOf(term1[1]) > 0 || lines[i].indexOf(term1[2]) > 0) {
fill(333, 61, 94);
} else if (lines[i].indexOf(term2[0]) > 0 || lines[i].indexOf(term2[1]) > 0 || lines[i].indexOf(term2[2]) > 0) {
fill(203, 71, 98);
} else {
fill(0, 0, 95);
}
rect(x, y, size/2, size/2);
}
}
謝謝你的幫助。我不得不最終使用不同的方法將文本附加到段落,但現在它正在工作,謝謝!我現在只有一個問題,那就是當for循環生成一個很好的正方形網格時,由於y + = 10當它們碰到窗口邊緣時按下了這些行,整個正方形羣落會隨着每個框架和完整的循環。有沒有什麼辦法可以讓整個廣場仍然沒有noLoop()? – themessup
沒關係,修好!在DRAW循環開始時忘記狀態x = value和y = value,然後通知for()循環。整個過程只有在setup()中,所以只更新一次。再次感謝! – themessup