我想要一个分为4个象限的分屏视频。我想使用Processing来获取一个单击的象限,并在一个较大的框架或窗口中显示视图。下面我已经有了一个click函数和一个名为mousePressed()的函数。您还可以找到帮助您识别正在处理的象限的代码。注意每个象限以防万一。
import peasy.*;
import peasy.org.apache.commons.math.*;
import peasy.org.apache.commons.math.geometry.*;
import processing.video.*;
import ddf.minim.*;
import processing.video.*;
String Path = "/Users/Gameheads/Desktop/Video1/POV Sports Prototype.mp4";
PeasyCam cam;
Movie myMovie;
Minim minim;
int boxSize = 75;
boolean overBox = false;
boolean locked = false;
float bx;
float by;
int boxNumber;
//AudioPlayer floor;
// Three variables for the background color.
float r = 0;
float b = 0;
float g = 0;
float a = 0;
// transparency rgba(100, 0, 0, 0)
void setup() {
background(r, g, b, a);
frameRate(30);
size(1280, 720);
// minim = new Minim(this);
//floor = minim.loadFile("Floor.mp3", 512);
myMovie = new Movie(this, Path);
// colorMode(HSB);
myMovie.play();
}
//Each Rectangle size should be 320x180
//XY (00)
//(X,Y,width, height)
void draw() {
image(myMovie, 0, 0, width, height); // draws video
// Draw the box
rect (0, 0, 55, 55); //Top Left, add 320 x 180 end
rect(640, 0, 55, 55); //Top Right, add 320 x 180 end
rect(0, 360, 55, 55); //Bottom Left
rect(640, 360, 55, 55); //Bottom right
// background(r,g,b);
stroke(255);
line(width/2,0,width/2,height);
line(0,height/2,width,height/2);
// Test if the cursor is over first gray square
if (mouseX > bx-boxSize && mouseX < bx+boxSize &&
mouseY > by-boxSize && mouseY < by+boxSize) {
overBox = true;
if(!locked) {
stroke(255, 0, 255);
fill(153);
}
}
//Bottom Right Quadrant
else if (mouseY > height/2 && mouseX >= 640) {
overBox = true;
if(!locked) {
stroke(255, 0, 255);
fill(153);
}
}
//Bottom Left Quadrant
else if (mouseY > height/2 && mouseX < 640)
{
stroke(255, 255, 125);
fill(153);
}
// top right Quadrant
else if (mouseY < height/2 && mouseX >= 640) {
overBox = true;
if(!locked) {
stroke(0, 0, 255);
fill(153);
}
}
//Top Left Quadrant
else if (mouseY < height/2 && mouseX < 640)
{
overBox = true;
if(locked){
stroke(255, 0, 0);
fill(153);
}
}
}
// Called every time a new frame is available to read
void movieEvent(Movie m) {
m.read();
}
void mousePressed() {
if(overBox) {
locked = true;
fill (255, 255, 255);
}
}
void mouseReleased() {
locked = false;
}
答案 0 :(得分:0)
Stack Overflow并非真正针对一般&#34;我如何做到这一点&#34;输入问题。这是特定的&#34;我试过X,期望Y,但得到了Z而不是#34;输入问题。但我会在一般意义上尝试提供帮助:
您需要split your problem up into smaller pieces然后一次拍摄一张。通过编写识别哪个象限的程序开始,这很好。但是现在我建议您创建一个单独的程序,只要您在第一个窗口中的任何位置单击,它就会显示一个新窗口。不要担心视频,只需让它自己工作。 提示:搜索PApplet.runSketch()
功能。
除此之外,创建一个简单的程序,只需将图像(不是视频)的象限绘制到屏幕上。您可以使用createGraphics()
函数来帮助解决此问题。使用图片,这样您就不必担心整个视频,而且如果您遇到问题,我们也会更容易为您提供帮助。
在开始考虑将它们组合起来之前,让这些东西完美地完成。然后,如果您遇到特定步骤,您可以发布MCVE该步骤。祝你好运。