我一直致力于处理一个中心点轨道运行的processing.js演示。我正在尝试添加一个输入侦听器,用于检查每次更新是否按下s
键,如果是,则调用方法以按指定因子减小每个物体轨道的大小。
示例是jsfiddle上的here。
基本上我已经在update()方法中放置代码来监听按键:
void update()
{
//detect input
if(keyPressed)
{
debugger; //debug
if(key == 's' || key == 'S')
{
//shrink orbit
ShrinkOrbit(planets,.9);
}
}
}
调用ShrinkOrbit(ArrayList <OrbitingBody> orbs, float reductionFactor)
方法:
/*
* Reduces size of orbit for specified group of orbiting bodies
*/
void ShrinkOrbit(ArrayList<OrbitalBody> orbs, float reductionFactor)
{
for(OrbitalBody b:orbs)
{
b.x *= reductionFactor;
b.y *= reductionFactor
}
}
但是,目前不仅没有触发调试断点,而且我看到chrome开发人员工具中出现了一些错误:
Uncaught SyntaxError: Unexpected reserved word
Uncaught TypeError: Cannot read property 'reason' of null Actions.js:333
(anonymous function) Actions.js:333
(anonymous function) moo-clientcide-1.3.js:212
Array.implement.each moo-clientcide-1.3.js:329
(anonymous function) moo-clientcide-1.3.js:212
Class.JSLintValidate Actions.js:330
wrapper.extend.$owner moo-clientcide-1.3.js:3798
Class.jsLint Actions.js:277
wrapper.extend.$owner moo-clientcide-1.3.js:3798
(anonymous function) moo-clientcide-1.3.js:1027
defn
我认为update()
是一个全局方法,可以在任何草图中调用的setup
等同于错误吗?我已经看到它在另一个正常运行的jsFiddle中使用了,这是我得出结论的地方。如果有任何帮助,我的目标是Processing.js 1.4.1。
答案 0 :(得分:1)
不要那样做。 1)更新确实不是一个全局函数,你得到的唯一的是Processing API函数,两个主要调用是setup(),在开始时调用一次,draw(),每个调用一次(除非你发出noLoop (),然后它只在你手动调用redraw()时才运行,2)使用事件处理程序,这就是它们的用途=)
boolean reduce = false;
void keyPressed() {
if(str(key).equals("s")) reduce = true;
}
void keyReleased() {
if(str(key).equals("s")) reduce = false;
}
void draw() {
if(reduce) { doWhateverYouNeedToDo(); }
drawStuff();
}