2017-10-29 1 views
0

p5.js를 사용하여 다음 함수를 만들고 마우스가 눌려지면 즉시 mousePressed 메서드가 실행됩니다. ans 변수를 포함하는 단락을 표시하기 위해 버튼 객체를 클릭 할 때까지 기다리지 않습니다.mousePressed 메서드가 p5js에서 조기에 시작됩니다.

내가 뭘 잘못하고 있니?

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

답변

1

의이 줄을 자세히 살펴 보자

checkMe.mousePressed(createP(ans)); 

이 두 라인으로 분할 될 수있다 : 즉

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

을, 당신은 전화하는거야 createP() 함수를 호출 한 다음 반환 된 값을 전달합니다 (아마도입니다). 0)를 mousePressed() 함수로 변환합니다. 자바 스크립트 콘솔에 오류가 발생하지 않는다는 것에 놀랐습니다.

대신에 함수를 값으로 사용하여 함수에 전달해야합니다. 당신이 매개 변수를 사용할 필요가 있기 때문에, 당신은이 방법으로 그렇게 할 수 있습니다 우리가 mousePressed() 함수에 전달할 때

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

공지 사항 callCreateP 것을 그 이름 뒤에 괄호를 ()이 없습니다. 왜냐하면 우리는 이것을 직접 호출하는 것이 아니라 값으로 사용하기 때문입니다.

이 라인이 단축 수 :

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

당신은 사람, 케빈입니다. 그것은 매력처럼 작동했습니다. 추가 설명도 훌륭합니다. 나는 항상 콜백의 개념으로 고심하고있다. 그러나 당신은 그것을 훨씬 더 분명하게했습니다. 감사!! – GMath314

관련 문제