我正在尝试访问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>
关于我遗失/做错的任何线索?
答案 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);
完成。无需深入了解该信息的草图。