检查源文件,我发现里面有一个play_movie_event
函数,它是播放电影的函数(逐帧)。它看起来像这样:
function play_movie_event(e, fromFrame, toFrame, repeat, performStop){
if(fromFrame === undefined || fromFrame < 1){
fromFrame = 1;
}
if(toFrame === undefined || toFrame > $(this).data("settings").images.length*$(this).data("settings").grid.rows*$(this).data("settings").grid.columns){
toFrame = $(this).data("settings").images.length*$(this).data("settings").grid.rows*$(this).data("settings").grid.columns;
}
if(repeat === undefined){
repeat = $(this).data("settings").repeat
}
if(performStop === undefined){
performStop = true;
}
if($(this).data("currentStatus") == 'play'){
clearInterval($(this).data("playingInterval"));
$(this).data("currentStatus","playing");
var self=this;
$(this).data("playingInterval",setInterval(function() {
// FPS Measurement
if($(self).data("realFpsTimeStamp") != undefined){
$(self).data("realFps",1/(((new Date()).getTime()-$(self).data("realFpsTimeStamp"))/1000));
//verboseOut.apply($(self),[$(self).data("realFps").toFixed(2)+"fps"]);
}else{
$(self).data("realFps",$(self).data("settings").fps);
}
$(self).data("realFpsTimeStamp",(new Date()).getTime());
// play frames
if($(self).data("settings").playBackwards){
if($(self).data("currentFrame").data('frame') == fromFrame && !repeat){
if(performStop){
$(self).trigger('stop');
}else{
$(self).trigger('pause');
}
$(self).trigger('ended');
}else{
$(self).trigger('playing');
if($(self).data("currentFrame").data('frame') != fromFrame){
methods.previousFrame.apply($(self));
}else{
methods.gotoFrame.apply($(self),[toFrame]);
}
}
}else{
if($(self).data("currentFrame").data('frame') == toFrame && !repeat){
if(performStop){
$(self).trigger('stop');
}else{
$(self).trigger('pause');
}
$(self).trigger('ended');
}else{
$(self).trigger('playing');
if($(self).data("currentFrame").data('frame') != toFrame){
methods.nextFrame.apply($(self));
}else{
methods.gotoFrame.apply($(self),[fromFrame]);
}
}
}
}, 1000/$(this).data("settings").fps));
}
}
你可能不在乎它是如何工作的,但重要的是像这样的行:
if($(self).data("currentFrame").data('frame') == toFrame && !repeat){
if(performStop){
$(self).trigger('stop');
}else{
$(self).trigger('pause');
}
$(self).trigger('ended');
}
你可以看到所有这些触发器。它们被放置在文档中的任何地方。这意味着使用它们的好方法是.on()
$('#movie').on('stop', function(){})
检查 jQuery 文档以了解其.trigger()
作用:http ://api.jquery.com/trigger/