任何人都可以帮我添加此代码的元素吗?
首先,我希望将其显示为一系列短视频,但我不知道在此草图中添加/写入数组的位置。
其次,我需要一个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);
}
答案 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。我已经尝试将你的问题分解为更小的步骤,所以一次关注其中一个小步骤。祝你好运。