处理 - 如何在更大的框架中显示屏幕的象限?

时间:2017-09-21 01:28:57

标签: processing

我想要一个分为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;
}

1 个答案:

答案 0 :(得分:0)

Stack Overflow并非真正针对一般&#34;我如何做到这一点&#34;输入问题。这是特定的&#34;我试过X,期望Y,但得到了Z而不是#34;输入问题。但我会在一般意义上尝试提供帮助:

您需要split your problem up into smaller pieces然后一次拍摄一张。通过编写识别哪个象限的程序开始,这很好。但是现在我建议您创建一个单独的程序,只要您在第一个窗口中的任何位置单击,它就会显示一个新窗口。不要担心视频,只需让它自己工作。 提示:搜索PApplet.runSketch()功能。

除此之外,创建一个简单的程序,只需将图像(不是视频)的象限绘制到屏幕上。您可以使用createGraphics()函数来帮助解决此问题。使用图片,这样您就不必担心整个视频,而且如果您遇到问题,我们也会更容易为您提供帮助。

在开始考虑将它们组合起来之前,让这些东西完美地完成。然后,如果您遇到特定步骤,您可以发布MCVE该步骤。祝你好运。