2013-05-07 93 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