我对PGraphics有一个小问题。我有以下一段代码,摘自我正在工作的更大的项目:
int x=0;
int y=0;
PGraphics array1;
PGraphics array2;
void setup() {
size(200,200);
background(0);
array1 = createGraphics(200,200);
array2 = createGraphics(200,200);
frameRate(10);
}
void draw() {
array1.beginDraw();
array1.background(0);
array1.noStroke();
array1.fill(150);
array1.ellipse(x,y,20,20);
array1.endDraw();
array1.loadPixels();
array2.loadPixels();
//presence of two below lines doesn't change anything
array1.updatePixels();
array2.updatePixels();
//not by arrayCopy since I want to add filters in next project
for(int i=0; i<200*200; i++) {
array2.pixels[i] = array1.pixels[i];
}
//presence of two below lines doesn't change anything
array1.updatePixels();
array2.updatePixels();
//I want to see only the array2 - now it should be the same as array1
// image(array1, 0,0);
image(array2, 0,0);
//presence of two below lines doesn't change anything
array1.updatePixels();
array2.updatePixels();
x++;
y++;}
一般来说,我希望将PGraphics array1复制到PGraphics array2中。但是,array2看起来像第一帧中的array1,并且视觉效果不会更新。当我添加以下内容时:
println(array1.pixels[0]+" "+array2.pixels[0]);它打印:
...
-6908266 -6908266
-6908266 -6908266
-6908266 -6908266
-16777216 -16777216
-16777216 -16777216
...所以很明显,两个数组包含相同的值。我不知道为什么我看不到更新后的array2。
根据文档,我尝试了放置在不同位置的updatePixels方法,但这没有任何帮助。
我错过了什么?
提前感谢!
发布于 2013-05-18 06:10:51
您忘记了为array2 PGraphic调用beginDraw()和endDraw()。如果您这样做了:
array2.beginDraw(); // HERE!!
for (int i= 0; i<array1.pixels.length; i++) {
array2.pixels[i] = array1.pixels[i];
}
array2.updatePixels();
array2.endDraw(); // and HERE!! :)它应该像预期的那样工作。
https://stackoverflow.com/questions/16605604
复制相似问题