我正在使用BigVideo.js jQuery 插件来显示全屏背景视频。我有在点击时加载不同背景视频的链接。在每个视频(3-5 秒长)结束时,我正在加载动画。每个视频顶部都有自己的动画。
现在我正在淡出动画,超时时间与视频长度相对应,但这并不是完全证明。我真正需要的是#anim03
在video-03.mp4
结束时淡入。但我无法弄清楚 BigVideo.js.on("ended")
事件究竟是如何工作的。在我下面的代码中(简化):
// init plugin
var BV = new $.BigVideo({useFlashForFirefox:false});
BV.init();
function setupVideo(url) {
if (Modernizr.touch) {
BV.show(url + '.jpg');
} else {
BV.show(url + '.mp4',{
altSource: url + '.webm',
ambient: false
});
}
}
function setupAnimation(num) {
BV.getPlayer().on("ended", function () { // event from video.js API - when video ends playing
$('#anim0' + num).animate({ opacity: 1 });
});
}
$('a').on('click', function(e) {
e.preventDefault();
// we remove .ext cause we got to setup .webm and .jpg versions
var url = $(this).attr('href').replace('.mp4', '');
setupVideo(url);
var current = $(this).parent().index()+1;
setupAnimation(current);
});
该事件被触发,但它似乎经历了某种队列并多次触发。如果我这样 console.log num
:
function setupAnimation(num) {
console.log(num);
BV.getPlayer().on("ended", function () {
$('#anim0' + num).animate({ opacity: 1 });
});
}
我得到一个单一的期望值。但如果我这样做:
function setupAnimation(num) {
BV.getPlayer().on("ended", function () {
console.log(num);
$('#anim0' + num).animate({ opacity: 1 });
});
}
然后我得到多个值num
,每次点击并调用这个函数时,我得到的越来越多......我猜这个.on("ended")
循环通过一些数组或什么?我无法通过查看插件的代码来弄清楚那部分。
非常感谢任何帮助或指针!