使用全局变量控制视频播放列表

control video playlist with global variables

我有一个视频播放列表,可以一个接一个地播放视频。 我需要播放列表继续播放,直到到达名称为 loop 的视频,然后循环播放视频直到全局变量之一 lvl1_winlvl2_loose(来自不同的脚本)转 1。 根据结果​​,播放不同的播放列表,playlist_lvl2playlist_lvl1_gameover 这是我目前使用的播放列表。它只是一次又一次地循环播放视频:

var activeloop;
var myvid = document.getElementById('intro_lvl1');

myvid.addEventListener('ended', function (e) 
{
    var activesource = document.querySelector("#intro_lvl1 source.active");
    var nextsource = document.querySelector("#intro_lvl1 source.active + 
source") || 
document.querySelector("#intro_lvl1 source:first-child");
    //for the video with the name "loop" in it.
    var loopsource = document.querySelector("#intro_lvl1 source.loop");

    activesource.className = "";
    nextsource.className = "active";

    myvid.src = nextsource.src;
    myvid.play();
});

谁能给我一些关于如何实现这个的建议?

您可以使用RegExp.prototype.test()检查.src是否包含"loop",将.loop设置为true

if (/loop/.test(nextsource.src)) {
  // perform logic here
  if (myvid.loop != true) {
    myvid.loop = true
  };
  if (lvl1_win == 1 ||  lvl2_loose == 1) {
    // do other stuff
  }
}

感谢您的回答! 我得到它与以下工作:

var lvl1_win;
var lvl1_loose;

var myvid = document.getElementById('intro_lvl1');

myvid.addEventListener('ended', function (e) {
var activesource = document.querySelector("#intro_lvl1 source.active");
var nextsource = document.querySelector("#intro_lvl1 source.active + 
source") || document.querySelector("#intro_lvl1 source:first-child");

if (/loop/.test(nextsource.src)) {
if (myvid.loop != true) {
myvid.loop = true;
};
if (lvl1_win == 1) {
alert("Won level 1");
}
if (lvl1_loose == 1) {
alert("Gameover level 1");
}
} else {
activesource.className = "";
nextsource.className = "active";

myvid.src = nextsource.src;
myvid.play();
}
});

但是,我不能在同一来源添加具体的输赢视频,否则会弄乱播放列表。 或者是否可以用 class loose 播放下一个视频,如果丢失反之亦然? 我的意思是:

if (lvl1_loose == 1) { 播放下一个视频 class gameover 然后在最后一帧播放暂停视频(结束循环) }