2013-05-07 95 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的hacky解決方法:var mousePressed = false; (「#preview」)。mousedown(function(){\t mousePressed = true; \t}); ()# \t $(「#preview」)。mouseup(function(){\t mousePressed = false; \t});'但是我希望有更好的方法來處理這個PJS只能 – 2013-05-07 09:59:27

+0

你可以把你的代碼放在http:/ /jsfiddle.net/ – 2013-05-08 13:44:34

+0

@benoît現在在[jsfiddle](http://jsfiddle.net/orgicus/qb5xp/),這有幫助嗎? – 2013-05-08 14:31:39

回答

1

不能訪問草圖內部變量,只能訪問函數。你必須爲它編寫一個獲取函數,然後才能工作。

boolean getMousePressValue() { return mousePressed; } 

那說:你真的沒有。你可以簡單地在畫布上添加一個click,mousedown,mouseup監聽器,它會以純JS的方式給你提供相同的信息,你似乎也在做這些。只需使用:

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

完成。沒有必要深入瞭解該信息的草圖。

+0

「無法訪問sketch-interal變量,只有函數」不知道,謝謝!我已經開始移植[加工草圖](https://github.com/twsu/brighteyes/blob/master/BrightEyesEditor/BrightEyesEditor.pde),這是沒有按預期工作的事情之一。將Processing代碼移植到ProcessingJS時,推薦的路線是什麼?加載一個pde,剝離不受支持的接口,並與需要的常規js或JavaScript中的ProcessingJS作爲js庫而不是轉換器/解析器進行交互?謝謝! – 2013-05-09 22:16:49

+0

如果它正在工作處理代碼,我甚至不打擾自己將它轉換爲本地JS。只要它不依賴進口,Processing.js本身就可以很好地轉換它。如果我需要將草圖和頁面的其餘部分連接在一起,我只需要使用像我在http://processingjs.org/articles/PomaxGuide.html – 2013-05-10 02:09:02

0

我在回答你的其他問題時回答了這個問題。我複製在這裏:

GoToLoop在https://github.com/processing-js/processing-js/issues/137說,與mousepressed您的問題的事實,以避免JS名稱衝突引起的,布爾mousepressed被稱爲JS __mousePressed。他們建議您使用Java語法來編寫應用程序並將其自動轉換爲JS,以避免出現這些問題。

+0

中描述的方法啊!這出(+1)。當我有機會時,會給這個機會 – 2015-02-23 18:58:00