You need to enable JavaScript to run this app. Processing中如何基于鼠标坐标分区触发不同视频播放
优惠活动
大模型
产品
解决方案
定价
更多

Processing中如何基于鼠标坐标分区触发不同视频播放

核心结论

完全不需要创建多窗口。Processing 内置的视频播放能力是将视频帧作为普通画布图像渲染的,和你当前使用的text()文本绘制逻辑层级完全一致,只需要把现有代码里触发文本显示的分支,替换为对应视频的播放控制、帧绘制操作即可,原有的坐标区间判断逻辑可以100%保留,不用做任何改动。

具体整合步骤
  • 前置准备
    • 在Processing编辑器中导入内置视频库:通过菜单栏「草图-导入库-Video」完成库引入,代码头部会自动生成import processing.video.*;的引入语句
    • 将两个待播放的视频文件放到项目的data文件夹下,保证文件名和后续代码中的加载路径完全匹配
  • 声明全局视频对象
    视频对象需要在setup()中完成加载、在draw()的分支判断中调用,因此要在所有方法外部声明两个PVideo实例,避免方法内变量被回收无法跨方法访问:
    PVideo movie1, movie2;
    
  • 改造setup()方法
    完全保留原有窗口尺寸配置,仅添加视频加载逻辑,不要改动原有窗口参数:
    void setup() {
      size(934,887);
      movie1 = loadVideo("1.mp4");
      movie2 = loadVideo("2.mp4");
    }
    
  • 改造draw()方法
    完整保留原有的坐标判定条件,将分支内的文本绘制操作替换为视频控制逻辑。核心规则是:鼠标命中哪个区域,就播放对应视频、暂停另一个视频,再把当前播放的视频帧画到画布上。

    关键注意点:每帧必须调用视频的read()方法拉取最新视频帧,否则视频会卡在初始状态无法正常播放。
    当鼠标未命中任意判定区间时,两个视频会自然保持暂停状态,和你原有代码中“无文本显示、仅黑背景”的行为完全匹配。如果视频尺寸和934*887的窗口不匹配,可以在调用image()时传入宽高参数,将视频自适应拉伸到画布尺寸。

整合完成的可直接运行代码示例
import processing.video.*;

// 全局声明两个视频对象
PVideo movie1, movie2;

void setup() {
  size(934,887);
  movie1 = loadVideo("1.mp4");
  movie2 = loadVideo("2.mp4");
}

void draw(){
  background(0);

  // 拉取所有视频的最新帧,避免播放卡顿
  movie1.read();
  movie2.read();

  // 原坐标判断逻辑完全保留
  if((46<mouseX && mouseX<339)&&(46<mouseY && mouseY<249)){
    // 控制对应视频播放,暂停另一个视频
    if(!movie1.isPlaying()) movie1.play();
    if(movie2.isPlaying()) movie2.pause();
    // 将视频帧绘制到画布,可传入宽高参数实现全屏自适应
    image(movie1, 0, 0, width, height);
  }

  // 原坐标判断逻辑完全保留
  if((46<mouseX && mouseX<339)&&(249<mouseY && mouseY<464)){
    if(!movie2.isPlaying()) movie2.play();
    if(movie1.isPlaying()) movie1.pause();
    image(movie2, 0, 0, width, height);
  }
}
常见疑问说明
  • 为什么之前查阅的视频教程和现有代码结构不匹配:多数入门视频教程仅演示单视频全屏播放的场景,会直接在draw()里固定调用image(movie, 0,0),没有嵌套分支判断逻辑。但本质上PVideo就是可绘制的图像对象,和text()、rect()没有使用上的区别,完全可以嵌入到任意条件判断分支中。
  • 为什么不能用多窗口实现:Processing 多窗口模式下,mouseX、mouseY的坐标是相对于当前获得焦点的独立窗口的,会直接破坏你原有的全局坐标区间判断逻辑;且多窗口的视频渲染需要独立的渲染上下文,开发复杂度会大幅提升,完全没有必要。

内容的提问来源于stack exchange,提问作者Lauren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 02:27:04