mousePressed方法在p5js中过早启动

时间:2017-10-29 01:53:05

标签: p5.js

我使用p5.js创建了以下函数,当页面加载时,mousePressed方法立即触发。它不会等我点击按钮对象来显示包含ans变量的段落。

我做错了什么?

function setup() {
    var ans = generate();
    var checkMe = createButton('Check Answer');
    checkMe.mousePressed(createP(ans));
}

1 个答案:

答案 0 :(得分:1)

让我们仔细看看这一行:

checkMe.mousePressed(createP(ans));

这可以分为两行:

var createPValue = createP(ans);
checkMe.mousePressed(createPValue);

换句话说,您正在调用createP()函数,然后将返回的值(可能是undefined)传递给mousePressed()函数。我很惊讶这不会导致JavaScript控制台出错。

相反,您要做的是将函数作为值传递到mousePressed()函数中。由于您需要使用参数,因此可以这样做:

function callCreateP(){
  createP(ans);
}
checkMe.mousePressed(callCreateP);

请注意callCreateP在将()函数传递给mousePressed()函数后,其名称后面没有括号checkMe.mousePressed(function(){ createP(ans); }); 。那是因为我们将它用作值而不是直接调用它。

你可以缩短到这一行:

Me