1

我正在尝试使用 javascript 更改处理变量。

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 中声明的全局变量,但我想反过来访问它。那可能吗?

(警报只是一个测试,这不是我最终想要做的;))

4

1 回答 1

2

现在,Processing.js 在你的草图上唯一暴露的是函数,所以你可以编写一个 getter/setter:

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

现在您可以随心所欲地获取和设置变量。

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

javascript.xPosUpdated(posX);

(假设您在草图启动时绑定了 javascript)。这样 JS 就不需要“进入”你的草图,你只需将它需要的所有信息交给它来执行你想要的更新。

于 2013-03-08T14:50:36.887 回答