【问题标题】:how do I disable keyboard input when the video is playng?播放视频时如何禁用键盘输入?
【发布时间】:2021-04-30 11:29:55
【问题描述】:

我正在制作一个主视频无限循环运行的应用程序。当用户按下一个键时,比如说“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, 0);
  vid0.loop();
  vid0.volume(10);
  
  if (b1 == true)
  {
    image(vid1, 0, 0);
    if (vid1.time() ==  vid1.duration())
    {
      vid1.stop();
      b1=false;
    }
    else{
      vid0.volume(0);
      //key = 0;
    }
  } 
  
  //vid2
  if (b2 == true)
  {
    image(vid2, 0, 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();
}

【问题讨论】:

    标签: video logic processing


    【解决方案1】:

    您还可以使用Movie 对象的time()duration() 函数,在允许按下键之前检查视频是否尚未开始或结束。

    void draw() {
        background(0);
      
        image(vid0, 0, 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();
            }
        }
    }
    

    【讨论】:

    • 视频在视频的最后一屏冻结而不是关闭窗口的任何原因?
    • 我相信这是预期的行为,您可以在视频播放完毕后使用exit() 关闭窗口。
    猜你喜欢
    • 1970-01-01
    • 2022-08-20
    • 2017-04-15
    • 2019-04-27
    • 2019-05-08
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多