我想在Processing中只使用一个草图在两个窗口中播放视频。 我也想使用串口通讯.. 串行通信运行良好,但视频无法正常工作。 我想该程序无法找到视频的位置。
我在Processing中搜索过一个草图的多个窗口。 我提到了这个。 How to create more than one window of a single sketch in Processing?
这是我写的代码。
我希望你帮助我
import processing.video.*;
import processing.serial.*;
Serial myPort; // Create object from Serial class
String val; // Data received from the serial port
Movie mov;
void setup() {
size(100, 100);
String[] args = {"TwoFrameTest"};
SecondApplet sa = new SecondApplet();
ThirdApplet na = new ThirdApplet();
PApplet.runSketch(args, sa);
PApplet.runSketch(args, na);
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);
sa.mov = new Movie(this, "transit.mov");
sa.mov.loop();
}
void draw() {
background(0);
ellipse(50, 50, 10, 10);
if (myPort.available() > 0) {
if ( (val = myPort.readStringUntil(ENTER)) != null ) val = trim(val);
else return;
if (val != null) {
println(val);
}
}
}
public class SecondApplet extends PApplet {
public Movie mov;
public void settings() {
size(500, 500);
}
public void draw() {
fill(0);
ellipse(100, 50, 10, 10);
if ("3Low".equals(val)) {
fill(255,random(255),200);
ellipse(60,20,100,100);
}
sa.image(sa.mov,0,0);
}
}
public class ThirdApplet extends PApplet {
public void settings() {
size(500, 500);
}
public void draw() {
fill(0);
ellipse(100, 50, 10, 10);
if ("3Low".equals(val)) {
fill(255,random(255),200);
ellipse(60,20,100,100);
}
}
}
答案 0 :(得分:0)
我想程序无法找到视频的位置。
请更具体。您看到了什么确切的错误消息?你期望发生什么?会发生什么呢?
我想在Processing中只使用一个草图在两个窗口中播放视频。
您发布的代码使用三个不同的草图,并且您在每个草图的范围内做了奇怪的事情。只需将每个草图写成完全独立的草图,然后最后添加链接代码。
我不知道为什么你不能用两个不同的草图来播放两部不同的电影。它可能看起来像这样:
Movie movieOne;
void setup() {
size(100, 100);
movieOne = new Movie(this, "MovieOne.mov");
movieOne.loop();
String[] args = {"SecondSketch"};
SecondSketch sa = new SecondSketch();
PApplet.runSketch(args, sa);
}
void draw() {
image(movieOne, 0, 0);
}
public class SecondSketch extends PApplet {
Movie movieTwo;
public void settings() {
size(500, 500);
movieTwo = new Movie(this, "MovieTwo.mov");
movieTwo.loop();
}
public void draw() {
image(movieTwo, 0, 0);
}
}
请注意,这只是示例代码,我甚至没有尝试编译它。您可能需要更改一些内容才能使其正常工作,但这应该可以让您大致了解要采取的方法。
更简单的选项可能是使用createGraphics()
函数创建两个缓冲区。将电影绘制到每个缓冲区,然后将缓冲区绘制到屏幕上。
Movie movieOne;
Movie movieTwo;
PGraphics bufferOne;
PGraphics bufferTwo;
void setup() {
size(1000, 500);
bufferOne = createGraphics(500, 500);
bufferTwo = createGraphics(500, 500);
movieOne = new Movie(this, "MovieOne.mov");
movieOne.loop();
movieTwo = new Movie(this, "MovieTwo.mov");
movieTwo.loop();
}
void draw() {
bufferOne.beginDraw();
bufferOne.image(movieOne, 0, 0);
bufferOne.endDraw();
bufferTwo.beginDraw();
bufferTwo.image(movieTwo, 0, 0);
bufferTwo.endDraw();
image(bufferOne, 0, 0);
image(bufferTwo, 500, 0);
}
同样,这只是您可能需要修改才能完美运行的示例代码。
可以在the refrence找到更多信息。
如果您仍无法使其正常运行,请在新问题中发布更新后的MCVE,我们将从那里开始。