从鼠标坐标播放处理视频?

Play Processing Video From Mouse Coordinates?

我正在尝试制作一个程序来根据鼠标坐标的位置播放不同的视频。基本上打开一个普通的 window 并四处移动鼠标,如果鼠标坐标在一组数字之间,则播放第一个视频。然后当鼠标坐标在另一组数字之间时,播放2号视频。

我编写了一个根据鼠标坐标更改文本的基本代码。以下是摘录:

void setup() {
  size(934,887);
}

void draw(){
  background(0);
//if x is between 46 and 339 AND y is between 46 and 249, then 1
  if((46<mouseX && mouseX<339)&&(46<mouseY && mouseY<249)){
    textSize(20);
    text("1", width/2, height/2);
  }

//if x is between 46 and 339 AND y is between 249 and 464, then 2
  if((46<mouseX && mouseX<339)&&(249<mouseY && mouseY<464)){
    textSize(20);
    text("2", width/2, height/2);
  }

我想使用相同的概念,但现在播放不同的视频而不是显示不同的文本。我不确定如何解决这个问题,因为我看过的处理视频教程有不同的无效设置和无效绘制以及所有仅用于播放视频的内容,我不知道如何与我自己的鼠标跟踪代码结合使用。我需要创建多个 windows 吗?那将如何工作?谢谢!

假设即使我们正在观看另一个视频,您也希望视频继续播放,这很简单:我们在 setup() 方法中将不同的视频作为 Movie 对象加载,然后让它们循环播放,而鼠标坐标指示当前正在播放的视频。下面是一个代码片段来演示:

import processing.video.*;
Movie lightbulbs, sample360;

void setup() {
  size(800, 600);

  lightbulbs = new Movie(this, "lightbulbs.mov");
  sample360 = new Movie(this, "360.mov");

  lightbulbs.loop();  // .play(); will play it once, .loop() will start over again after the last frame
  sample360.loop();
}

void draw() {
  background(0);

  if (mouseX < width/2) {
    image(lightbulbs, 0, 0);
  } else {
    image(sample360, 0, 0);
  }
  
  // here's a line so we see clearly where the movie changes in the example
  stroke(255);
  line(width/2, 0, width/2, height);
}

void movieEvent(Movie m) {
  m.read();
}

为了尽可能轻松地加载我的电影,我进入素描文件夹并创建了一个 data 文件夹。 Processing 将识别此文件夹,并且每当您尝试在不指定路径的情况下加载文件时,它都会在那里寻找它(所以这是我保存示例电影的地方):

电影比较重一点,所以我会让你弄清楚在哪里可以找到你自己的。 Peronnaly 我刚刚在谷歌上搜索了“免费的 .mov 样本”并从那里随机挑选了一些。

对我来说它是这样的(它随时调整大小以使文件更轻):

如果您有任何问题,我会随时待命,但我认为这会尊重您的基本概念并完成工作。玩得开心!