2013-07-25 27 views
0

現在我有一個HTML頁面呈現20個畫布,每個畫布都有自己的processing.js腳本實例。爲了減少CPU使用率,我將mouseover/out事件放在loop()/ noLoop()中,只有鼠標懸停在圖上。Processing.js:如何繪製()只畫布的一部分,以減少CPU使用

但我需要更進一步。現在的畫布是300x400,其中有一個300x300的空間需要動態繪製所有的時間,但是有一個圖例的矩形,其餘的空間不需要使用framerate()重繪,休息。

是否有任何知道的方式來本質上指定draw()函數哪些像素重繪?

回答

2

我敢肯定,100x300的空白區域不會顯着增加計算量。但是,你當然可以傳遞給下面這樣的:

if(frameCount==1) [draw legend code];

或使用if(frameCount % 30 == 0)...一個連續的,但不太頻繁的渲染。


編輯:

void setup(){ 
    size(400,400); 
    noStroke(); 
    background(255); 
} 

void draw(){ 
    fill(255,255,255,50); 
    rect(0, 150, width, height-150); 

    if(frameCount%50 == 1) { 
    fill(255); 
    rect(0, 0, width, 150); 
    fill(0); 
    text("frame " + frameCount, width/2, 75); 
    } 
    fill(255,0,0); 
    ellipse(random(0, width), random(150, height), 10, 10); 
} 
+0

這不是一個空白區域。這是一個每秒更新或少於一次的傳奇。我只想繪製更新,但如果降低幀率(),則整個畫布會變慢。我正在尋找一種方法來在單個畫布內指定不同的幀率。 – ZekeDroid

+0

所以你的答案是上面的替代方法.. – geotheory

+0

對不起,但不是真的。看看我是否告訴它只在frameCount爲1時繪製圖例,然後它會在一秒鐘內繪製一次,然後從那裏開始,其餘部分會出現一個空白區域回放。如果我使用其他選項,則每30幀閃爍一次。我需要的是修改繪圖函數,以便根據例如我指定的像素進行重繪。這樣我就可以做你說的話,並保持靜態的傳說不再消失。 – ZekeDroid