婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 用HTML5制作視頻拼圖的教程

用HTML5制作視頻拼圖的教程

熱門標簽:南通數據外呼系統推廣 申請400電話流程簡介 阜陽企業外呼系統 地圖標注位置能賺錢嗎 呼和浩特外呼電銷系統排名 pageadm實現地圖標注 外呼線穩定線路 邢臺縣地圖標注app 外呼系統電話怎么投訴

幾天前同事給我看了一個特效,是一個拼圖游戲,不同的是,拼圖里的是動畫。他讓我看下做個DEMO,于是就自己整了一會,也確實不難。用canvas很容易做。所以這篇博文不適合高手看。。。。就是隨便寫來玩玩的。
效果圖:

至少我剛看到這個的時候覺得挺新穎的,所以才會想到做出來玩玩,覺得樓主out的哥們請輕噴

  不多說,先上DEMO:視頻拼圖  (或許要等一會才能看到效果,我是直接在w3school那里搞了個視頻鏈接過來的,拖動什么的都做的很簡單,或許還有些bug,畢竟就只是做一個DEMO玩玩而已,說說原理就行了),還有一點,直接把視頻的當前幀畫到canvas中在移動設備上好像還不支持。。。至少我用ipad看了一下,發現畫不上去,如果有知道腫么解決這問題的大牛請為小弟解答一下,不甚感激

  原理:每一塊拼圖就是一個canvas,同時還需要一個離屏canvas。先整一個video標簽


復制代碼
代碼如下:
</p> <p><video id="video" src="http://www.w3school.com.cn/example/html5/mov_bbb.mp4" width="600px" height="400px" controls="control" loop="loop" style="display:block;position:absolute;top:-6000px;"></video></p> <p>

并且把video隱藏掉,然后播放視頻的時候把每一幀都畫到離屏canvas中(離屏canvas就是隱藏了的canvas,用于保存數據),寫法很簡單:


復制代碼
代碼如下:
ctx.drawImage(video , 0 , 0 , vw , vh);

,直接用drawImage方法畫上去就行了。為何要先用離屏canvas呢,因為如果直接把每一幀數據同時畫到所有拼圖塊的canvas中,瀏覽器會瞬間崩掉。所以用一個離屏canvas作為緩沖。先把當前幀的數據保存到canvas,然后再將canvas畫到作為拼圖塊的canvas中。將canvas畫到canvas中也很簡單,也是用drawImage就可以搞定:

ctx2.drawImage(cs , -this.cols*this.w , -this.rows*this.h , vw , vh);

然后。。。。原理就這么簡單,之后提醒一點,用requestAnimationFrame循環取幀時,要限一下速,例如下面所寫的,我是每30毫秒取一次,推薦30~50毫秒,太低瀏覽器容易崩潰,太高的話視頻出現卡幀現象了:

 

復制代碼
代碼如下:

function animate(){
var newTime = new Date();
if(newTime - lastTime > 30){
lastTime = newTime;
ctx.drawImage(video , 0 , 0 , vw , vh);
canvases.forEach(function(){
var ctx2 = this.cas.getContext('2d');
ctx2.drawImage(cs , -this.cols*this.w , -this.rows*this.h , vw , vh);
});
}
if("requestAnimationFrame" in window){
requestAnimationFrame(animate);
}
else if("webkitRequestAnimationFrame" in window){
webkitRequestAnimationFrame(animate);
}
else if("msRequestAnimationFrame" in window){
msRequestAnimationFrame(animate);
}
else if("mozRequestAnimationFrame" in window){
mozRequestAnimationFrame(animate);
}
}


最后貼出所有代碼: 
復制代碼
代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style>
body{margin:0;padding:0;}
.allCanvas{
position: relative;
margin:50px auto;
width:600px;
}
.vcanvas{
position: absolute;
display: block;
border: 1px solid;
}
</style>
<title>視頻拼圖</title>
</head>
<body>
<div class="allCanvas">
<canvas id="liping" width="600" height="400" style="display:none"></canvas>
</div>
<video id="video" src="http://www.w3school.com.cn/example/html5/mov_bbb.mp4" width="600px" height="400px" controls="control" loop="loop" style="display:block;position:absolute;top:-6000px;"></video>
<script>
var video = document.getElementById("video");
var cs = document.getElementById("liping");
var ctx = cs.getContext('2d')
var rows = 3,
cols = 3,
cb = document.querySelector(".allCanvas"),
vw = 600,
vh = 400,
canvases = [];</p> <p> function createCanvas(){
var num = rows*cols;
for(var i=0;i<cols;i++){
for(var j=0;j<rows;j++){
var canvas = new vCanvas(Math.random()*600, Math.random()*600 , vw/rows , vh/cols , j , i);
canvases.push(canvas);
}
}
}</p> <p> var vCanvas = function(x,y,w,h,cols,rows){
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.cols = cols;
this.rows = rows;
this.creat();
this.behavior();
}
vCanvas.prototype = {
creat:function(){
this.cas = document.createElement("canvas");
cb.appendChild(this.cas);
this.cas.className = "vcanvas";
this.cas.id = "vc_"+(this.cols+1)*(this.rows+1);
this.cas.style.left = this.x+"px";
this.cas.style.top = this.y+"px";
this.cas.width = this.w;
this.cas.height = this.h;
},
behavior:function(){
this.cas.onmousedown = function(e){
e = e || window.event;
var that = this;
var om = {
x:e.clientX,
y:e.clientY
}
window.onmousemove = function(e){
e = e || window.event;
var nm = {
x:e.clientX,
y:e.clientY
}
that.style.left = parseInt(that.style.left.replace("px","")) + (nm.x-om.x) + "px";
that.style.top = parseInt(that.style.top.replace("px","")) + (nm.y-om.y) + "px";
om = nm;
}
window.onmouseup = function(){
this.onmousemove = null;
}
}
}
}</p> <p> Array.prototype.forEach = function(callback){
for(var i=0;i<this.length;i++){
callback.call(this[i]);
}
}</p> <p> var lastTime = 0;
function initAnimate(){
lastTime = new Date();
createCanvas();
animate();
}</p> <p> function animate(){
var newTime = new Date();
if(newTime - lastTime > 30){
lastTime = newTime;
ctx.drawImage(video , 0 , 0 , vw , vh);
canvases.forEach(function(){
var ctx2 = this.cas.getContext('2d');
ctx2.drawImage(cs , -this.cols*this.w , -this.rows*this.h , vw , vh);
});
}
if("requestAnimationFrame" in window){
requestAnimationFrame(animate);
}
else if("webkitRequestAnimationFrame" in window){
webkitRequestAnimationFrame(animate);
}
else if("msRequestAnimationFrame" in window){
msRequestAnimationFrame(animate);
}
else if("mozRequestAnimationFrame" in window){
mozRequestAnimationFrame(animate);
}
}</p> <p> video.play();
initAnimate();
</script>
</body>
</html>

標簽:楊凌 鶴崗 黃山 撫順 德州 蚌埠 內蒙古 辛集

巨人網絡通訊聲明:本文標題《用HTML5制作視頻拼圖的教程》,本文關鍵詞  用,HTML5,制作,視頻,拼圖,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《用HTML5制作視頻拼圖的教程》相關的同類信息!
  • 本頁收集關于用HTML5制作視頻拼圖的教程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩视频国产视频| 欧美理论片在线| 国产成人综合在线| 久久爱www久久做| 韩国精品免费视频| 国产一区二区免费视频| 国产九色精品成人porny| 国产精品亚洲第一区在线暖暖韩国 | 91黄色免费看| 欧美视频一区二区在线观看| 欧美日韩免费观看一区三区| 337p亚洲精品色噜噜噜| 久久久夜色精品亚洲| 日本一二三不卡| 亚洲午夜久久久久久久久久久| 亚洲午夜三级在线| 国产在线乱码一区二区三区| 成人免费av网站| 日本电影亚洲天堂一区| 日韩三级在线观看| 国产精品久久久久久久久果冻传媒| 亚洲欧美国产77777| 日韩精品三区四区| 激情偷乱视频一区二区三区| 成人福利视频在线看| 欧美系列一区二区| 精品国产污网站| 亚洲天堂福利av| 蜜臀久久99精品久久久画质超高清| 久久97超碰国产精品超碰| 成人av影院在线| 欧美精品黑人性xxxx| 亚洲视频一区在线观看| 婷婷亚洲久悠悠色悠在线播放| 国产在线一区观看| 在线免费不卡视频| 久久综合久久综合久久| 亚洲成人午夜电影| 成人毛片在线观看| 欧美一区二区三区公司| 国产精品视频看| 九色|91porny| 欧美日韩在线直播| 亚洲欧洲国产日韩| 国产二区国产一区在线观看| 欧美人伦禁忌dvd放荡欲情| 国产精品视频免费| 国产精品综合二区| 制服丝袜亚洲色图| 亚洲激情六月丁香| k8久久久一区二区三区| 久久免费精品国产久精品久久久久| 亚洲综合色丁香婷婷六月图片| 国产成人精品亚洲777人妖| 日韩午夜电影在线观看| 五月婷婷激情综合| 欧美优质美女网站| 国产精品国产馆在线真实露脸| 激情文学综合插| 日韩欧美国产精品一区| 日本欧美大码aⅴ在线播放| 欧美性受极品xxxx喷水| 亚洲免费资源在线播放| 9i在线看片成人免费| 国产精品色噜噜| 粉嫩aⅴ一区二区三区四区五区| 亚洲精品一线二线三线| 韩国欧美国产1区| 久久久噜噜噜久久人人看 | 色94色欧美sute亚洲13| 自拍偷在线精品自拍偷无码专区| 成人黄页毛片网站| 国产精品乱人伦一区二区| 成人中文字幕电影| 欧美国产精品劲爆| 成人aaaa免费全部观看| 亚洲欧美视频在线观看视频| 91黄色免费版| 免费观看日韩av| 欧美mv日韩mv亚洲| 风流少妇一区二区| 亚洲你懂的在线视频| 欧美日韩一区国产| 久久成人免费电影| 国产日韩视频一区二区三区| 风间由美性色一区二区三区| 亚洲男人的天堂一区二区| 91丨porny丨首页| 亚洲一二三四久久| 91精品国产入口在线| 国产精品亚洲一区二区三区在线| 国产精品视频线看| 欧美三级电影一区| 精品无人码麻豆乱码1区2区| 国产欧美精品区一区二区三区| 99久久精品国产一区| 亚洲一区自拍偷拍| 日韩欧美一区中文| 成人sese在线| 天涯成人国产亚洲精品一区av| 日韩精品在线看片z| 成人网男人的天堂| 日本伊人精品一区二区三区观看方式| 久久久精品日韩欧美| 精品视频全国免费看| 国产成人亚洲精品狼色在线| 亚洲综合视频在线观看| 久久精品一区二区| 欧美午夜电影网| 国产精品一卡二卡| 午夜在线成人av| 国产精品午夜久久| 欧美不卡一二三| 欧美性高清videossexo| 国产伦精品一区二区三区在线观看| 亚洲欧美激情一区二区| 久久久久亚洲蜜桃| 6080午夜不卡| 色菇凉天天综合网| 成人黄色国产精品网站大全在线免费观看| 亚洲成人动漫一区| 国产精品短视频| 国产欧美一二三区| 欧美v日韩v国产v| 欧美日本韩国一区二区三区视频| 成人深夜视频在线观看| 国产乱一区二区| 奇米色777欧美一区二区| 亚洲一区二区三区四区五区中文| 久久亚洲影视婷婷| 日韩一卡二卡三卡| 欧美一区日本一区韩国一区| 欧美专区日韩专区| 在线观看日韩毛片| 一本高清dvd不卡在线观看| 懂色av一区二区在线播放| 激情综合亚洲精品| 美女在线视频一区| 日本最新不卡在线| 日韩和的一区二区| 日韩精品亚洲一区| 天天综合天天做天天综合| 亚洲成人精品在线观看| 亚洲高清免费一级二级三级| 亚洲欧美偷拍另类a∨色屁股| 亚洲欧洲av色图| 亚洲男人的天堂在线aⅴ视频 | 欧美日韩精品一区二区天天拍小说 | 国产精品一级黄| 高清国产一区二区| 波多野结衣精品在线| 99国产精品久久久| 色噜噜狠狠成人中文综合| 色婷婷综合五月| 欧美天天综合网| 欧美一区二区三区四区五区 | 中文av一区特黄| 久久在线观看免费| 亚洲国产精品ⅴa在线观看| 欧美激情中文字幕| 亚洲免费在线视频一区 二区| 一区二区三区**美女毛片| 亚洲午夜激情网站| 另类小说视频一区二区| 黄色日韩网站视频| 丁香六月综合激情| 99久久免费视频.com| 色欧美片视频在线观看| 91精品婷婷国产综合久久| 欧美电影免费观看高清完整版在 | 欧美日韩一区二区三区在线| 7799精品视频| 精品国产乱码91久久久久久网站| 国产免费成人在线视频| 亚洲男人天堂av网| 裸体一区二区三区| 成人听书哪个软件好| 欧美日韩精品福利| 国产日韩欧美电影| 图片区小说区国产精品视频| 精彩视频一区二区| 色综合色综合色综合色综合色综合| 欧美日韩精品欧美日韩精品| 国产片一区二区| 日本不卡一二三区黄网| 成人黄色大片在线观看| 日韩视频在线一区二区| 亚洲一线二线三线久久久| 国产福利精品一区| 欧美一区国产二区| 亚洲另类在线视频| 国产九九视频一区二区三区| 欧美三区在线视频| 国产精品久久精品日日| 精品综合免费视频观看| 欧美中文字幕一二三区视频| 中文子幕无线码一区tr| 免费在线观看成人| 欧美亚洲一区二区在线| 国产精品青草久久|