如何在ProcessingJS中使用mousePressed?

时间:2013-05-07 09:39:28

标签: javascript processing processing.js

我正在尝试访问ProcessingJS代码段中的mousePressed属性,但我正在获取undefined

这是我到目前为止所尝试的内容:

<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>

关于我遗失/做错的任何线索?

2 个答案:

答案 0 :(得分:2)

我顺便回答了你的另一个问题。我在这里复制了一遍:

https://github.com/processing-js/processing-js/issues/137的GoToLoop说,mousepressed的问题是由于为了避免JS中的名称冲突,在JS中将布尔mousepressed称为__mousePressed。他们建议您使用Java语法对应用程序进行编码,并将其自动转换为JS,以避免这些问题。

答案 1 :(得分:1)

您无法访问草图内部变量,只能访问函数。你必须为它编写一个获取函数,然后它才能工作。

boolean getMousePressValue() { return mousePressed; }
那说:你真的没有。您可以简单地在画布上添加一个click,mousedown,mouseup监听器,它将以纯JS方式为您提供相同的信息,无论如何您似乎都在这样做。只需使用:

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

完成。无需深入了解该信息的草图。