问题描述
我正在制作一个主视频无限循环运行的应用程序。当用户按下一个键时,比如“a”,与其关联的视频播放,主视频在后台运行。如果因为主视频中没有声音而没有暂停或停止就可以了。
问题是我想在用户的视频仍在播放时禁用键盘输入。我无法做到这一点。在我当前的代码中,当视频正在播放时,如果用户按下另一个键,则与其关联的视频开始在已播放的视频上播放。
谁能帮我弄清楚如何在视频已经播放时禁用键盘输入?请帮我分析一下逻辑。提前致谢。
import processing.video.*;
import processing.sound.*;
Movie vid1,vid2,vid0;
boolean b1,b2 = false;
void setup()
{
size(1920,1080);
vid1 = new Movie(this,"vid-01.mp4");
vid2 = new Movie(this,"fhv-2.mp4");
vid0 = new Movie (this,"main-vid-0.mp4");
frameRate(30);
//main.loop();
//main.play();
//main.stop();
//main.loop();
}
void draw()
{
background(0);
image(vid0,0);
vid0.loop();
vid0.volume(10);
if (b1 == true)
{
image(vid1,0);
if (vid1.time() == vid1.duration())
{
vid1.stop();
b1=false;
}
else{
vid0.volume(0);
//key = 0;
}
}
//vid2
if (b2 == true)
{
image(vid2,0);
if (vid2.time() == vid2.duration())
{
vid2.stop();
b2=false;
}
else{
vid0.volume(0);
//key = 0;
}
}
}
void keypressed()
{
if (key == 'a' || key == 'A')
{
//vid0.volume(0);
vid1.play();
b1 = true;
}
if (key == 'b'|| key == 'B'){
vid2.play();
b2 = true;
}
}
void movieEvent(Movie m)
{
m.read();
}
解决方法
您还可以使用 time()
对象的 duration()
和 Movie
函数,在允许按下某个键之前检查视频是否尚未启动或已完成。
void draw() {
background(0);
image(vid0,0);
vid0.loop();
vid0.volume(10);
}
void keyPressed() {
if((vid1.time() == 0.0 || vid1.time() == vid1.duration()) && (vid2.time() == 0.0 || vid2.time() == vid2.duration())){
if (key == 'a' || key == 'A'){
vid0.pause();
//vid0.volume(0);
vid1.play();
}
if (key == 'b'|| key == 'B'){
vid0.pause();
vid2.play();
}
}
}