如何在 Processing 中创建多个 window 个草图?
How to create more than one window of a single sketch in Processing?
我想在 Processing 中仅使用一个草图创建两个 windows。
我想要做的是,如果我在一个 window 中单击一个按钮,那么一些图像会出现在另一个 window。
我搜索了 Google 并找到了一些示例。实际上,我在这个 'stack overflow web' 中发现了同样的问题。这是 links.
Create more than one window of a single sketch in Processing
http://forum.processing.org/one/topic/multiple-windows-2-4-2011.html
这是第 link 秒的代码。
import java.awt.Frame;
PFrame f;
secondApplet s;
//f = new PFrame();
void setup() {
size(320, 240);
f = new PFrame();
}
void draw() {
background(255,0,0);
fill(255);
rect(10,10,frameCount%0,10);
s.background(0, 0, 255);
s.fill(100);
s.rect(10,20,frameCount%0,10);
s.redraw();
}
public class PFrame extends Frame{
public PFrame() {
setBounds(100,100,400,300);
s = new secondApplet();
add(s);
s.init();
show();
}
}
public class secondApplet extends PApplet {
public void setup() {
size(400, 300);
noLoop();
}
public void draw() {
}
}
但是当我 运行 这个代码时,我在 add(s);.
Container 类型中的 add(Component) 方法不适用于参数 (multi_window_test.secondApplet)
第一个link的第一个注释的代码是相似的,但是当我运行这段代码时,我得到了相同的错误信息。
我找到的其他示例代码都是类似的。他们都创建了 PFrame class 和扩展 PApplet 的 secondApplet。他们说这些代码很好用,但我不能 运行 这些代码。
我找不到错误消息的原因。 运行宁此示例代码时,其他人似乎没有问题,但我除外。
如果有人知道解决方案,请帮助我。
此外,如果有其他简单的方法可以在一个草图中创建多个windows,请告诉我。
错误消息的原因很明显:add()
函数需要 Component
,而 PApplet
不是 Component
。这是因为从处理 3 开始,PApplet
不再扩展 Applet
,因此将它用作 Component
的旧代码将不再有效。
相反,请考虑我对 的回答。基本上,只需为第二个 window 创建一个扩展 PApplet
的 class,然后使用第二个 PApplet
作为参数调用 PApplet.runSketch()
:
void setup() {
size(100, 100);
String[] args = {"TwoFrameTest"};
SecondApplet sa = new SecondApplet();
PApplet.runSketch(args, sa);
}
void draw() {
background(0);
ellipse(50, 50, 10, 10);
}
public class SecondApplet extends PApplet {
public void settings() {
size(200, 100);
}
public void draw() {
background(255);
fill(0);
ellipse(100, 50, 10, 10);
}
}
我想在 Processing 中仅使用一个草图创建两个 windows。
我想要做的是,如果我在一个 window 中单击一个按钮,那么一些图像会出现在另一个 window。
我搜索了 Google 并找到了一些示例。实际上,我在这个 'stack overflow web' 中发现了同样的问题。这是 links.
Create more than one window of a single sketch in Processing http://forum.processing.org/one/topic/multiple-windows-2-4-2011.html
这是第 link 秒的代码。
import java.awt.Frame;
PFrame f;
secondApplet s;
//f = new PFrame();
void setup() {
size(320, 240);
f = new PFrame();
}
void draw() {
background(255,0,0);
fill(255);
rect(10,10,frameCount%0,10);
s.background(0, 0, 255);
s.fill(100);
s.rect(10,20,frameCount%0,10);
s.redraw();
}
public class PFrame extends Frame{
public PFrame() {
setBounds(100,100,400,300);
s = new secondApplet();
add(s);
s.init();
show();
}
}
public class secondApplet extends PApplet {
public void setup() {
size(400, 300);
noLoop();
}
public void draw() {
}
}
但是当我 运行 这个代码时,我在 add(s);.
Container 类型中的 add(Component) 方法不适用于参数 (multi_window_test.secondApplet)
第一个link的第一个注释的代码是相似的,但是当我运行这段代码时,我得到了相同的错误信息。
我找到的其他示例代码都是类似的。他们都创建了 PFrame class 和扩展 PApplet 的 secondApplet。他们说这些代码很好用,但我不能 运行 这些代码。
我找不到错误消息的原因。 运行宁此示例代码时,其他人似乎没有问题,但我除外。 如果有人知道解决方案,请帮助我。
此外,如果有其他简单的方法可以在一个草图中创建多个windows,请告诉我。
错误消息的原因很明显:add()
函数需要 Component
,而 PApplet
不是 Component
。这是因为从处理 3 开始,PApplet
不再扩展 Applet
,因此将它用作 Component
的旧代码将不再有效。
相反,请考虑我对 PApplet
的 class,然后使用第二个 PApplet
作为参数调用 PApplet.runSketch()
:
void setup() {
size(100, 100);
String[] args = {"TwoFrameTest"};
SecondApplet sa = new SecondApplet();
PApplet.runSketch(args, sa);
}
void draw() {
background(0);
ellipse(50, 50, 10, 10);
}
public class SecondApplet extends PApplet {
public void settings() {
size(200, 100);
}
public void draw() {
background(255);
fill(0);
ellipse(100, 50, 10, 10);
}
}