Я хочу иметь четыре кнопки. Каждая кнопка имеет имя и значение. Когда каждая из кнопок нажата, я хочу выполнить функцию, которая принимает значение кнопки в качестве параметра.
Функция, которую я хочу вызвать, на самом деле не импортируется, но, скажем,
function fun(value) {
console.log(value)
}
У меня это работает с использованием этого кода.
// // create 4 buttons
createButton('fabrics', 'fabrics')
.position(50, 50 + 25 * 1)
.mousePressed(function() {
fun('fabrics');
})
createButton('leather', 'leather')
.position(50, 50 + 25 * 2)
.mousePressed(function() {
fun('leather');
})
createButton('wood', 'wood')
.position(50, 50 + 25 * 3)
.mousePressed(function() {
fun('wood');
})
createButton('metal', 'metal')
.position(50, 50 + 25 * 4)
.mousePressed(function() {
fun('metal');
})
Это просто кажется абсолютно глупым делать это таким образом и не использовать for-l oop. Я попробовал это в for-l oop:
// // create 4 buttons
names = ['fabric', 'leather', 'wood', 'metal'];
for (let i = 0; i < 4; i++) {
name = names[i]
createButton(name, name)
.position(50, fabric[0].height + 25 * (i + 1))
.mousePressed(function() {fun(name);})
}
Это создает 4 кнопки в нужном положении, однако mousePressed запускает функцию fun
с metal
в качестве параметра. Другими словами, хотя position
зацикливается, как я и ожидал, mousePressed
для каждой кнопки обновляется до последней fun(name)
для каждой итерации.
Какой лучший способ сделать это в p5?