2017-10-29 8 views
0

p5.jsを使用して次の関数を作成し、ページが読み込まれるとmousePressedメソッドがすぐに起動します。ボタンオブジェクトをクリックしてans変数を含む段落を表示するのを待つことはありません。p5jsでmousePressedメソッドが早期に起動しています

私は間違っていますか?

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

答えて

1

のは、この行を詳しく見てみましょう:

checkMe.mousePressed(createP(ans)); 

これは、2つの行に分割することができます:あなたが呼んでいる、言い換えれば

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

createP()関数を呼び出し、返された値を渡します(おそらくです)。 0)を関数に追加します。私はこれがJavaScriptコンソールでエラーを起こさないことに驚いています。

代わりに、関数に値として関数を渡します。我々はmousePressed()関数に渡すときcallCreatePは、その名の後の括弧()を持っていないことを

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

はご注意:このパラメータを使用する必要があるので、あなたは、この方法を行う可能性があります。これは、直接呼び出すのではなく、値として使用しているからです。

あなたはこのラインにそれを短縮することができます:

checkMe.mousePressed(function(){ createP(ans); }); 
+1

あなたは男性、ケビンです。それは魅力のように働いた。追加の説明も素晴らしいです。私はいつもコールバックのコンセプトに苦しんできました。しかし、あなたは本当にそれをはるかに明確にしました。ありがとう!! – GMath314

関連する問題