2013-03-07 135 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不需要「觸及」草圖,只需將所需的所有信息交給您執行所需的更新即可。