试图构建一个从json文件( src & title )获取视频数据的视频播放器。从视觉上看,这将是一个播放器与下面的3个链接,加载不同的视频到播放器时,点击。
到目前为止我的代码是:
<link rel="stylesheet" type="text/css" href="style.css">
<div class="container">
<div class="hook">
<video onended="playNext()" width="640" height="480" id="myVideo" controls autoplay>
</video>
</div>
<div>
<ul>
<li><a id="vid1" href="#"><img src="http://placehold.it/200x100"></a> </li>
<li><a id="vid2" href="#"><img src="http://placehold.it/200x100"></a></li>
<li><a id="vid3" href="#"><img src="http://placehold.it/200x100"></a></li>
</ul>
</div>
<!-- /.hook -->
</div>
<!-- /.container -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"> </script>
<script type="text/javascript">
var conUrlCount = 0;
var myVideo = document.getElementById("myVideo");
//parsedData should be declared outside the function scope since we want it to be accessible from outside
var parsedData;
var callback = function (text) {
parsedData = JSON.parse(text);
console.log('parsed',parsedData)
conUrlCount = 0;
//after load play the first video
playNext();
};
//when page is loaded, data in json file is parsed and returned
function loadFunction() {
//returning json data
//ajax.get("clips.json", callback);
//simulate
getAjax(callback);
};
function playNext() {
if (!parsedData) {
return
}
var myVideo = document.getElementById("myVideo");
myVideo.src = parsedData[conUrlCount]['content-url'];
myVideo.play();
conUrlCount+1;
}
//to simulate
function getAjax(callback) {
setTimeout(function () {
callback(JSON.stringify([{
"id": "vid1",
"name": "#",
"description": "#",
"content-url": "video1.mp4",
"thumb-url": "#"
}, {
"id": "vid2",
"name": "#",
"description": "#",
"content-url": "video2.mp4",
"thumb-url": "#"
}, {
"id": "vid3",
"name": "#",
"description": "#",
"content-url": "video3.mp4",
"thumb-url": "#"
},{
"id": "vid4",
"name": "#",
"description": "#",
"content-url": "video4.mp4",
"thumb-url": "#"
} ]))
}, 100)
}
loadFunction();
document.getElementById("vid1").addEventListener("click", loadFunction);
document.getElementById("vid2").addEventListener("click", loadFunction);
document.getElementById("vid3").addEventListener("click", loadFunction);
</script>
现在我不能把下面的3块瓷砖装到玩家身上?任何指点都将不胜感激.
发布于 2015-12-15 13:32:04
根据我们的评论,如下所示应该这样做;
var callback = function (text, video) {
parsedData = JSON.parse(text);
console.log('parsed', parsedData)
conUrlCount = video;
//after load play the first video
playNext();
};
function loadFunction(video) {
//returning json data
//ajax.get("clips.json", callback);
//simulate
getAjax(callback, video);
}
//to simulate
function getAjax(callback, video) {
setTimeout(function () {
callback(JSON.stringify([{
"id": "vid1",
"name": "#",
"description": "#",
"content-url": "video1.mp4",
"thumb-url": "#"
}, {
"id": "vid2",
"name": "#",
"description": "#",
"content-url": "video2.mp4",
"thumb-url": "#"
}, {
"id": "vid3",
"name": "#",
"description": "#",
"content-url": "video3.mp4",
"thumb-url": "#"
}, {
"id": "vid4",
"name": "#",
"description": "#",
"content-url": "video4.mp4",
"thumb-url": "#"
}]), video)
}, 100)
}
document.getElementById("vid1").addEventListener("click", loadFunction(0));
document.getElementById("vid2").addEventListener("click", loadFunction(1);
document.getElementById("vid3").addEventListener("click", loadFunction(2));
注意更改的函数。我在回调中添加了一个视频变量,以向需要播放的视频发出信号。例如,您可以在任何时候(包括在页面加载上)调用它。
https://stackoverflow.com/questions/34289710
复制相似问题