私はそのような配列を持っています:
var data = [
{
"title" : "Title 1",
"slideText" : "",
"startTime" : 0
},
{
"title" : "Title 2",
"slideText" : "",
"startTime" : 60
},
{
"title" : "Title 3",
"slideText" : "",
"startTime" : 120
}
];
HTML5ビデオにseeked
イベントリスナーがあります。ユーザーが検索するときは、ユーザーがどこにいるかを確認し、配列内のどのインデックスを使用しているかを判断する必要があります。たとえば、72秒をシークすると、array[1]になります。
今私はこれを持っています:
player.addEventListener("seeked", function(event)
{
currentTime = player.currentTime;
angular.forEach($scope.data, function(value, key)
{
if (currentTime >= $scope.data[key].startTime && currentTime <= $scope.data[key + 1].startTime)
{
$scope.$apply(function()
{
$scope.setActive(key);
});
}
});
});
これはすべて、シークされた時間が配列の最後に到達して$scope.data[key + 1].time
未定義になるまで機能します。これにどのようにアプローチすればよいですか?私の心は今軌道に乗っておらず、私はまだコーヒーを飲んでいません:|
編集
動作する新機能
player.addEventListener("seeked", function(event)
{
currentTime = player.currentTime;
for (var i = 0; i <= $scope.data.length; i++)
{
if ($scope.data[i + 1] != undefined)
{
if (currentTime < $scope.data[i + 1].startTime)
{
$scope.$apply(function()
{
$scope.setActive(i);
});
break;
}
}
else
{
$scope.$apply(function()
{
$scope.setActive($scope.data.length - 1);
});
}
}
});