添加数组+ mousePressed

时间:2016-08-02 05:19:09

标签: arrays video processing slideshow series

任何人都可以帮我添加此代码的元素吗?

首先,我希望将其显示为一系列短视频,但我不知道在此草图中添加/写入数组的位置。

其次,我需要一个mousePressed函数来点击从1到6的每个视频 - 包括从视频6到重复该系列的视频1的跳转功能(如果这是正确的术语)。

这些视频从头到尾都不会自然播放,因为它被虚拟绘制功能操纵,这就是为什么我需要一个mousePressed动作来点击下一个视频。

这是代码,谢谢你的帮助!

 
import processing.video.*;

Movie mov;
int newFrame = 0;

void setup() {
  size(640, 360);
  background(0);
  // Load and set the video to play. Setting the video 
  // in play mode is needed so at least one frame is read
  // and we can get duration, size and other information from
  // the video stream. 
  mov = new Movie(this, "video1.mp4");  

  // Pausing the video at the first frame. 
  mov.play();
  mov.jump(0);
  mov.pause();
}

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

void draw() {
  background(0);
  image(mov, 0, 0, width, height);
  fill(255);
  text(getFrame() + " / " + (getLength() - 1), 10, 30);
  int f=ceil (map(mouseX,0,width,1,getLength()));
  setFrame(f);
}

//void keyPressed() {
//  if (key == CODED) {
//    if (keyCode == LEFT) {
//      if (0 < newFrame) newFrame--; 
//    } else if (keyCode == RIGHT) {
//      if (newFrame < getLength() - 1) newFrame++;
//    }
//  } 
//  setFrame(newFrame);  
//}

int getFrame() {    
  return ceil(mov.time() * 30) - 1;
}

void setFrame(int n) {
  mov.play();

  // The duration of a single frame:
  float frameDuration = 1.0 / mov.frameRate;

  // We move to the middle of the frame by adding 0.5:
  float where = (n + 0.5) * frameDuration; 

  // Taking into account border effects:
  float diff = mov.duration() - where;
  if (diff < 0) {
    where += diff - 0.25 * frameDuration;
  }

  mov.jump(where);
  mov.pause();  
}  

int getLength() {
  return int(mov.duration() * mov.frameRate);
}

1 个答案:

答案 0 :(得分:0)

  

首先,我希望将其显示为一系列短视频,但我不知道将数组添加/写入此草图的位置。

您将使用数组而不是现有的mov变量。您的mov变量包含一部电影,因此您需要使用数组来容纳6部电影。

更改此行:

 
Movie mov;

对此:

Movie[] movies = new Movie[6];

这将创建一个包含6个Movie实例的数组。

然后您需要填充该数组。

movies[0] = new Movie(this, "video1.mp4");
movies[1] = new Movie(this, "video2.mp4");  

或者你可以使用for循环。

  

其次,我需要一个mousePressed功能来点击1到6的每个视频 - 包括从视频6到重复该系列的视频1的跳转功能(如果这是正确的术语)。

然后只需创建一个包含当前索引的int变量。在您当前使用mov变量的任何位置使用该索引。递增mousePressed()函数中的索引,并在达到6时将其重置为0.

很难回答“我该怎么做?”输入问题。 Stack Overflow设计更多用于特定的“我试过X,期望Y,但得到Z而不是”类型问题。所以我真的建议你尝试一下并在遇到问题时发布MCVE。我已经尝试将你的问题分解为更小的步骤,所以一次关注其中一个小步骤。祝你好运。