2013-03-07 127 views
1

我想用javascript更改处理变量。如何通过javascript访问processing.js变量

HTML:

<canvas id="Processing_test" data-processing-sources="test06-controller.pde"> 
</canvas> 

处理:

float posX = 500; 

void setup() { 
    size(600,600); 
    background(100); 
    ellipseMode(CENTER); 
} 
void draw() { 
    background(100); 
    fill(200); 
    ellipse(posX,300,260,260); 
} 

的Javascript:

var p = Processing.getInstanceById('Processing_test'); 
alert(p.posX); 

的问题是没有出现警报。如果我写

alert(p); 

它显示:未定义。我知道我可以使用我用Javascript声明的全局变量,但是我想用另一种方式访问​​它。那可能吗?

(警报只是测试,这是不是我想要的到底是做什么;))

回答

2

现在Processing.js草图,公开的仅仅是功能,让你可以写一个getter/setter:

float getPosX() { return posX; } 
void setPosX(float v) { posX = v; } 

现在,您可以获取并设置变量以适应您心中的内容。

但是,通常情况下,如果您想基于草图在JavaScript中执行操作,则草图调用JS函数会更有意义。如果,例如,posX需要在某个地方在页面上更新,草图可以称之为

javascript.xPosUpdated(posX); 

(前提是你必然的草图启动的JavaScript)。通过这种方式,JS不需要“触及”草图,只需将所需的所有信息交给您执行所需的更新即可。