2013-05-07 2 views
0

ProcessingJS 코드에서 mousePressed 속성에 액세스하려고 시도했지만 undefined이 표시됩니다. 여기ProcessingJS에서 mousePressed를 사용하는 방법?

는 지금까지 시도했습니다 무엇 : 내가 잘못하고/누락 사항에

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
<script src="http://cloud.github.com/downloads/processing-js/processing-js/processing-1.4.1.min.js"></script> 
<script> 
$(document).ready(function() { 
    $('body').append($('<canvas id="preview"><p>Your browser does not support the canvas tag.</p></canvas>')); 
    function onPJS(p) { 
     p.setup = function(){ 
      console.log(p.mousePressed);//prints undefined 
      try{ 
       console.log(p.mousePressed()); 
      }catch(e){ 
       console.log(e.name,e.message);//prints TypeError Property 'mousePressed' of object [object Object] is not a function 
      } 
     } 
    } 
    new Processing(document.getElementById("preview"), onPJS); 
}); 
</script> 

모든 단서?

+0

나는 지금 jquery에 의존하는 해적판 해결책을 사용하고있다 :'var mousePressed = false; \t $ ("# preview"). mousedown (function() {\t mousePressed = true; \t}); . \t $ ("# 미리보기")와 mouseUp (함수() {\t의 mousePressed = false를 \t});'하지만 나는 단지 –

+0

당신이 당신의 코드를 삽입 할 수 HTTP PJS와 함께이 처리하는 더 나은 방법이 소원 : /이 /jsfiddle.net/ –

+0

@ benoît 지금 [jsfiddle] (http://jsfiddle.net/orgicus/qb5xp/)에 있습니다. 도움이 되셨습니까? –

답변

1

스케치 내부 변수에는 액세스 할 수 없으며 기능 만 사용할 수 있습니다. 당신은 그것을위한 함수를 써야 할 것이고, 그러면 작동 할 것입니다.

boolean getMousePressValue() { return mousePressed; } 

그건 그렇습니다. 당신은 정말로 그렇지 않습니다. 클릭, 마우스 다운, 마우스 업 수신기를 캔버스에 추가하면 순수한 JS 방식으로 동일한 정보를 얻을 수 있습니다. 어쨌든 그렇게하는 것처럼 보입니다. 그냥 사용하십시오 :

pjsCanvas.addEventListener("mousedown",function(){...},false); 
pjsCanvas.addEventListener("mouseup",function(){...},false); 

완료. 해당 정보에 대한 스케치에 도달 할 필요가 없습니다.

+0

"스케치 - 내부 변수에 액세스 할 수 없으며 기능 만"알지 못했습니다. 감사합니다! 나는 [Processing Sketch] (https://github.com/twsu/brighteyes/blob/master/BrightEyesEditor/BrightEyesEditor.pde)를 포팅하기 시작했으며 이것은 예상대로 작동하지 않는 것들 중 하나입니다. 처리 코드를 ProcessingJS로 이식 할 때 권장되는 경로는 무엇입니까? pde를로드하고, 지원되지 않는 인터페이스를 제거하고 필요한 경우 정규 j와 인터페이싱하거나 Javascript의 ProcessingJS/변환기/파서가 아닌 js 라이브러리로 사용 하시겠습니까? 감사! –

+0

코드를 처리하는 중일 때 고유 한 JS로 직접 변환하는 것을 신경 쓰지 않습니다. 수입에 의존하지 않는 한, Processing.js는 아주 잘 변환 할 수 있습니다. 스케치와 페이지의 나머지 부분을 묶어야 할 필요가 있다면 http://processingjs.org/articles/PomaxGuide.html –

0

나는 당신의 다른 질문에 이것을 대답했다. 내가 그 여기 복제했습니다

GoToLoop https://github.com/processing-js/processing-js/issues/137에서는 부울 mousepressed가 JS에서 __mousePressed라고 mousepressed에 문제가 JS에서 이름 충돌을 피하기 위해 사실에 의해 발생되는 것을 말한다. Java 구문을 사용하여 앱을 코딩하고 자동으로 JS로 변환하여 이러한 문제가 발생하지 않도록하는 것이 좋습니다.

+0

아!에서 설명하는 것과 같은 접근 방식을 사용하면됩니다. ... 가리키는 것에 대한 고맙습니다. 이것 (+1). 기회가 생겼을 때이 기회를 줄 것입니다. –