1

我正在尝试访问 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>

关于我错过/做错了什么的任何线索?

4

2 回答 2

2

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

https://github.com/processing-js/processing-js/issues/137上的GoToLoop说您的问题mousepressed是由于为了避免 JS 中的名称冲突,在 JSmousepressed中调用了布尔值__mousePressed。他们建议您使用 Java 语法来编写应用程序并将其自动翻译成 JS,以避免这些问题。

于 2015-02-23T18:34:20.210 回答
1

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

boolean getMousePressValue() { return mousePressed; }

那就是说:你真的没有。您可以简单地在画布上添加一个 click、mousedown、mouseup 侦听器,这将以纯 JS 方式为您提供相同的信息,无论如何您似乎都在这样做。只需使用:

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

完毕。无需进入草图即可获取该信息。

于 2013-05-09T13:24:27.013 回答