我正在使用处理工具,一个面向图形用户的图书馆。 www.processing.org。 在处理中制作2个窗口并不常见。 我做到了,当我在两个帧上使用1个图像时,1个绘制真的很慢。 但是frameRate仍然很快(你可以看到仍然快速的蓝色椭圆)。
我制作了一个视频来展示:
https://www.youtube.com/watch?v=XDf-Rzo4RhU&feature=youtu.be
有人可以解释导致这种情况的原因以及如何摆脱它吗?
import processing.core.*;
public class MyProcessingSketch extends PApplet {
int id;
Data d;
public static void main(String args[]) {
PApplet.main(new String[] { "MyProcessingSketch", "0" });
PApplet.main(new String[] { "MyProcessingSketch", "1" });
}
public void init() {
super.init();
id = parseInt(args[args.length - 1]);
PApplet.println("init:"+id);
d = Data.getInstance();
delay(1000);
}
public void setup() {
size(800, 600);
if (id == 0) {
d.createGraphics(this);
}
smooth();
}
public void draw() {
background(0, 255, 0);
if (id == 0) {
d.createGraphics(this);
image(d.pg, 0, 0);
}
else {
image(d.pg, 0, 0);
fill(0, 0, 200, 50);
for(int i = 0; i < 100; i++) {
ellipse(random(width), random(height), random(10, 50), random(10, 50));
}
}
fill(255, 0, 0);
text(frameRate, 20, 40);
}
}
Daja.java
import processing.core.PApplet;
import processing.core.PGraphics;
public enum Data {
INSTANCE;
PGraphics pg;
public static Data getInstance() {
return INSTANCE;
}
void createGraphics(PApplet p) {
if (pg == null) {
pg = p.createGraphics(p.width, p.height);
pg.smooth();
}
pg.beginDraw();
pg.background(255, 0, 0);
pg.line(0, 0, p.width, p.height);
for(int i = 0; i < 100; i++) {
pg.ellipse(p.random(p.width), p.random(p.height), p.random(10, 50), p.random(10, 50));
}
pg.endDraw();
}
}