メソッドを介して再生中のビデオからフレームカウントを返す必要があるプロジェクトに取り組んでいvideo.prototype.getCurrentFrame()
ます。私のスクリプトは、このメソッドによって返される数値が「未定義」であることを除けば、ほとんど問題なく動作します。私の問題は変数のスコープで何かをしなければならないことを知っていますが、私はjavascriptが初めてで、自分で動作させることができないようです...
私の方法では、フレームと呼ばれる変数を更新するフレームvideo.prototype.setUpPlayer
カウントをカウントできる関数があります。'timeListener'
このフレーム変数にアクセスしようとするとvideo.prototype.getCurrentFrame()
、更新された値に到達しません。
これまでの私のコードは次のとおりです。
var Video = function(aVideoId){
this.videoId = aVideoId;
this.frame;
this.videoContainer;
this.myPlayer;
this.timeListener;
this.progressListener;
};
Video.prototype.getCurrentFrame = function(){
return this.frame;
}
Video.prototype.setVideoContainer = function(){
videoContainer = $('<div>', {
id: this.videoId,
class: 'projekktor',
width: "100%",
height: "100%",
});
$('#innerContainer').html(videoContainer);
}
Video.prototype.setUpPlayer = function(){
videoId = this.videoId;
myPlayer = projekktor('#' + videoId, {
controls: "true",
volume: 0.5,
preload: false,
autoplay: true,
playlist: [{
0: {
src: '/' + videoId + '.mp4',
type: 'video/mp4'
},
1: {
src: '/' + videoId + '.mov',
type: 'video/mov'
},
2: {
src: '/' + videoId + '.ogv',
type: 'video/ogv'
}
}]
}, function() { // call back
myPlayer.addListener('time', timeListener);
myPlayer.addListener('progress', progressListener);
});
timeListener = function(duration) {
$('#currentTime').html(duration);
frame = Math.round(duration * 25);
$('#currentFrame').html(frame);
return this.frame = frame;
}
progressListener = function(value) {
$('#progress').html(Math.round(value))
$('#progress2').html(myPlayer.getLoadProgress());
}
}
よろしくお願いいたします。