0

私はplayer.getCurrentTime() == 10秒のときに関数をトリガーしようとしています(そしてこのようなもっと多くの間隔)。

これはJSタイミングイベントで実行できますが、正確ではなく、ブラウザの速度が大幅に低下します。

別の方法はありますか?

現在のコード:

trigFuncAt = Array(3, 5, 7, 10);
setInterval(checkFunc(), 200);

function checkFunc(){
    if( include( trigFuncAt, player.getCurrentTime() ) ){
        DoThis();
    }
}

function include(arr,obj) {
    return (arr.indexOf(obj) != -1);
}

function DoThis(){...}

player.getCurrentTime()タイマーの一種で、ミリ秒ごとに変化します。

YT API:https ://developers.google.com/youtube/iframe_api_reference

4

1 に答える 1

1

関数の実行に必要な時間が間隔時間の間に十分であることを保証できないため、 setInterval の代わりに setTimeout を使用するという考え方です。また、現在の時刻を int にキャストする必要があります。サンプルコード:

// implicit global video containing YT video
var keypoints = [1, 2, 3, 10, 15];
var updatePlayerInfo = function() {
    var played,
        i = 0,
        keypoint;
    // not ready?
    if (!video.getCurrentTime) {
        return false;
    }
    // ready!
    if (played = parseInt(video.getCurrentTime(), 10)) {
        for (; keypoint = keypoints[i++]; ) {
            if (keypoint === played) {
                // do something
                doSomething();
                break;
            }
        }
    }
    // throttle function!
    setTimeout(function(){
        updatePlayerInfo();
    }, 250);
};
于 2012-10-13T08:40:44.423 に答える