成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > HTML5 Canvas 破碎重組的視頻特效的示例代碼

HTML5 Canvas 破碎重組的視頻特效的示例代碼

熱門標簽:地圖標注自己去過的地方 電銷機器人視頻 高德地圖標注錯誤怎么修改 洛陽市伊川縣地圖標注中心官網(wǎng) 標準智能外呼系統(tǒng) 會聲會影怎樣做地圖標注效果 搜狗星級酒店地圖標注 平頂山電子地圖標注怎么修改 江蘇高頻外呼系統(tǒng)線路

也許你見過HTML5圖片破碎動畫特效,實現(xiàn)的原理也挺簡單的。但是你應(yīng)該沒有見過視頻也可以破碎重組,這個HTML5動畫就是利用Canvas的相關(guān)特性,實現(xiàn)了點擊鼠標讓視頻破碎重組的效果。在視頻區(qū)域點擊鼠標,即可讓該區(qū)域的視頻破碎,讓后經(jīng)過一段時間后,破碎的區(qū)域又可以重組還原,視覺效果非常棒。

HTML代碼
 

        <video id="sourcevid" autoplay="true" loop="true">
            <source src="BigBuckBunny_640x360.mp4" type="video/mp4"/>
            <source src="BigBuckBunny_640x360.ogv" type="video/ogg"/>
        </video>
        <canvas id="sourcecopy" width="640" height="360"></canvas>
</div>
<div>
<center>
    <div style="z-index:1;position:relative;text-align:center;font-size:16px;font-weight:bold;width:1000px;top:60px;">Click video to blow it up!</div>
    <canvas id="output" width="1000" height="600" onmousedown="dropBomb(event, this)" style="border: 0 none">        </canvas>
</center>
</div>

JavaScript代碼

var video;
var copy;
var copycanvas;
var draw;

var TILE_WIDTH = 32;
var TILE_HEIGHT = 24;
var TILE_CENTER_WIDTH = 16;
var TILE_CENTER_HEIGHT = 12;
var SOURCERECT = {x:0, y:0, width:0, height:0};
var PAINTRECT = {x:0, y:0, width:1000, height:600};

function init(){
    video = document.getElementById('sourcevid');
    copycanvas = document.getElementById('sourcecopy');
    copy = copycanvas.getContext('2d');
    var outputcanvas = document.getElementById('output');
    draw = outputcanvas.getContext('2d');
    setInterval("processFrame()", 33);
}
function createTiles(){
    var offsetX = TILE_CENTER_WIDTH+(PAINTRECT.width-SOURCERECT.width)/2;
    var offsetY = TILE_CENTER_HEIGHT+(PAINTRECT.height-SOURCERECT.height)/2;
    var y=0;
    while(y < SOURCERECT.height){
        var x=0;
        while(x < SOURCERECT.width){
            var tile = new Tile();
            tile.videoX = x;
            tile.videoY = y;
            tile.originX = offsetX+x;
            tile.originY = offsetY+y;
            tile.currentX = tile.originX;
            tile.currentY = tile.originY;
            tiles.push(tile);
            x+=TILE_WIDTH;
        }
        y+=TILE_HEIGHT;
    }
}

var RAD = Math.PI/180;
var randomJump = false;
var tiles = [];
var debug = false;
function processFrame(){
    if(!isNaN(video.duration)){
        if(SOURCERECT.width == 0){
            SOURCERECT = {x:0,y:0,width:video.videoWidth,height:video.videoHeight};
            createTiles();
        }
        //this is to keep my sanity while developing
        if(randomJump){
            randomJump = false;
            video.currentTime = Math.random()*video.duration;
        }
        //loop
        if(video.currentTime == video.duration){
            video.currentTime = 0;
        }
    }
    var debugStr = "";
    //copy tiles
    copy.drawImage(video, 0, 0);
    draw.clearRect(PAINTRECT.x, PAINTRECT.y,PAINTRECT.width,PAINTRECT.height);

    for(var i=0; i<tiles.length; i++){
        var tile = tiles[i];
        if(tile.force > 0.0001){
            //expand
            tile.moveX *= tile.force;
            tile.moveY *= tile.force;
            tile.moveRotation *= tile.force;
            tile.currentX += tile.moveX;
            tile.currentY += tile.moveY;
            tile.rotation += tile.moveRotation;
            tile.rotation %= 360;
            tile.force *= 0.9;
            if(tile.currentX <= 0 || tile.currentX >= PAINTRECT.width){
                tile.moveX *= -1;
            }
            if(tile.currentY <= 0 || tile.currentY >= PAINTRECT.height){
                tile.moveY *= -1;
            }
        }else if(tile.rotation != 0 || tile.currentX != tile.originX || tile.currentY != tile.originY){
            //contract
            var diffx = (tile.originX-tile.currentX)*0.2;
            var diffy = (tile.originY-tile.currentY)*0.2;
            var diffRot = (0-tile.rotation)*0.2;

            if(Math.abs(diffx) < 0.5){
                tile.currentX = tile.originX;
            }else{
                tile.currentX += diffx;
            }
            if(Math.abs(diffy) < 0.5){
                tile.currentY = tile.originY;
            }else{
                tile.currentY += diffy;
            }
            if(Math.abs(diffRot) < 0.5){
                tile.rotation = 0;
            }else{
                tile.rotation += diffRot;
            }
        }else{
            tile.force = 0;
        }
        draw.save();
        draw.translate(tile.currentX, tile.currentY);
        draw.rotate(tile.rotation*RAD);
        draw.drawImage(copycanvas, tile.videoX, tile.videoY, TILE_WIDTH, TILE_HEIGHT, -TILE_CENTER_WIDTH, -TILE_CENTER_HEIGHT, TILE_WIDTH, TILE_HEIGHT);
        draw.restore();
    }
    if(debug){
        debug = false;
        document.getElementById('trace').innerHTML = debugStr;
    }
}

function explode(x, y){
    for(var i=0; i<tiles.length; i++){
        var tile = tiles[i];

        var xdiff = tile.currentX-x;
        var ydiff = tile.currentY-y;
        var dist = Math.sqrt(xdiff*xdiff + ydiff*ydiff);

        var randRange = 220+(Math.random()*30);
        var range = randRange-dist;
        var force = 3*(range/randRange);
        if(force > tile.force){
            tile.force = force;
            var radians = Math.atan2(ydiff, xdiff);
            tile.moveX = Math.cos(radians);
            tile.moveY = Math.sin(radians);
            tile.moveRotation = 0.5-Math.random();
        }
    }
    tiles.sort(zindexSort);
    processFrame();
}
function zindexSort(a, b){
    return (a.force-b.force);
}

function dropBomb(evt, obj){
    var posx = 0;
    var posy = 0;
    var e = evt || window.event;
    if (e.pageX || e.pageY){
        posx = e.pageX;
        posy = e.pageY;
    }else if (e.clientX || e.clientY) {
        posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
        posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }
    var canvasX = posx-obj.offsetLeft;
    var canvasY = posy-obj.offsetTop;
    explode(canvasX, canvasY);
}

function Tile(){
    this.originX = 0;
    this.originY = 0;
    this.currentX = 0;
    this.currentY = 0;
    this.rotation = 0;
    this.force = 0;
    this.z = 0;
    this.moveX= 0;
    this.moveY= 0;
    this.moveRotation = 0;

    this.videoX = 0;
    this.videoY = 0;
}

/*
    getPixel
    return pixel object {r,g,b,a}
*/
function getPixel(imageData, x, y){
    var data = imageData.data;
    var pos = (x + y * imageData.width) * 4;
    return {r:data[pos], g:data[pos+1], b:data[pos+2], a:data[pos+3]}
}
/*
    setPixel
    set pixel object {r,g,b,a}
*/
function setPixel(imageData, x, y, pixel){
    var data = imageData.data;
    var pos = (x + y * imageData.width) * 4;
    data[pos] = pixel.r;
    data[pos+1] = pixel.g;
    data[pos+2] = pixel.b;
    data[pos+3] = pixel.a;
}
/*
    copyPixel
    faster then using getPixel/setPixel combo
*/
function copyPixel(sImageData, sx, sy, dImageData, dx, dy){
    var spos = (sx + sy * sImageData.width) * 4;
    var dpos = (dx + dy * dImageData.width) * 4;
    dImageData.data[dpos] = sImageData.data[spos];     //R
    dImageData.data[dpos+1] = sImageData.data[spos+1]; //G
    dImageData.data[dpos+2] = sImageData.data[spos+2]; //B
    dImageData.data[dpos+3] = sImageData.data[spos+3]; //A
}
</script>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:鄂爾多斯 果洛 常德 廣東 廣西 阿克蘇 蚌埠 松原

巨人網(wǎng)絡(luò)通訊聲明:本文標題《HTML5 Canvas 破碎重組的視頻特效的示例代碼》,本文關(guān)鍵詞  HTML5,Canvas,破碎,重組,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 Canvas 破碎重組的視頻特效的示例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5 Canvas 破碎重組的視頻特效的示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    夜先锋资源站| 99久久人爽人人添人人澡| 红桃视频在线观看一区二区| 国产午夜精品一区二区三区| 91福利国产成人精品照片| 国产精品你懂得| 欧美gayvideo| 男人天堂视频在线| 97超碰人人在线| 欧美69精品久久久久久不卡| 国产精品一二二区| 性xxxx视频| 日韩电影大片中文字幕| 久久九九久精品国产免费直播| 99久久久无码国产精品性波多| 国产一区二区三区四区老人| 色在线中文字幕| 国内揄拍国内精品少妇国语| 二区三区四区高清视频在线观看| 一区二区三区四区激情| 99精品视频在线播放免费| 久久尤物视频| jizzjizzjizz孕妇| www.av在线视频| 午夜精品免费观看| 国产成人精品亚洲男人的天堂| 亚洲va国产va欧美va观看| 久久青青草综合| 国产一区二区在线观看视频| 97视频免费在线看| 日本在线视频网址| 欧美在线看片a免费观看| 国产日韩亚洲精品| 国产伦理久久久| 欧美午夜aaaaaa免费视频| 日韩亚洲一区在线| 色777狠狠综合秋免鲁丝| 一区二区不卡视频在线观看| 二区三区在线播放| 四虎影视最新网站入口在线观看| 亚洲综合激情网| 久久精品国产亚洲高清剧情介绍| 米奇777在线欧美播放| a级毛片免费高清视频| 国产精品999| 狠狠综合久久av一区二区蜜桃| 国产在线精品播放| 二区三区在线视频| 久久久精品久久久久| 性久久久久久久久久久| 激情内射人妻1区2区3区| 色网视频在线| 激情深爱一区二区| 国产精品欧美在线观看| 伊人手机在线| 亚洲青色在线| 久久国产精品高清| 99国产精品视频免费观看一公开| 国产在线视频不卡二| 综合亚洲视频| 午夜欧美视频在线观看| 国产精品无码自拍| 你懂的国产在线| 国产不卡一区二区视频| 日本一本草久p| 欧美6一10sex性hd| 久久狠狠久久综合桃花| 久久久久999| 亚洲精品一区二区三区蜜桃| 深夜福利网站在线观看| 婷婷久久伊人| 18av在线视频| 亚洲欧美乱综合图片区小说区| 国产成人精品无码免费看夜聊软件| 秋霞av亚洲一区二区三| 天堂av免费在线| 麻豆短视频在线观看| 91精品久久久久久久久久久| 天天影视色香欲综合| 日韩在线你懂的| 日本视频免费| 国产欧美综合在线| 最近中文字幕在线中文视频| 国产偷国产偷亚洲高清97cao| 精品一区二区三区高清免费不卡| 成视人a免费观看视频| 日本波多野结衣在线| 亚洲日本香蕉视频| 在线天堂中文www视软件| 日韩成人动漫| 亚洲一级二级三级在线免费观看| 中文字幕亚洲免费| 成人一级福利| 欧美日韩性生活视频| 资源av在线| 日本黄色网址大全| 久久视频在线观看| 91caoporm在线视频| 久久福利视频一区二区| 佐山爱在线视频| 啪啪av大全导航福利综合导航| 国产一区二区在线播放视频| 久久精品国产欧美亚洲人人爽| 热re99久久精品国产66热| 欧美国产日韩中文字幕在线| 一区二区三区黄色片| 亚洲综合小说区| a天堂视频在线| 亚洲乱码中文字幕综合| 毛片在线免费视频| 国产精品人人爽人人爽| 一级特黄视频| 欧美午夜女人视频在线| 欧美理论在线| 国产99久久久国产精品成人免费| 欧美激情成人动漫| 国产强被迫伦姧在线观看无码| 国产男女猛烈无遮挡a片漫画| 中文字幕の友人北条麻妃| 九九视频免费在线观看| 欧美激情2020午夜免费观看| 国产在线自天天| 久久电影网站中文字幕| 懂色av蜜桃av| 国产精品美女高潮无套| 日本乱码高清不卡字幕| 手机看片国产精品| 免费国产亚洲视频| 久久夜色精品国产欧美乱极品| 26uuu亚洲综合色欧美| 国产在线拍揄自揄拍无码| 黄色免费在线看| 国产精品无码专区在线观看| 99免费视频观看| 国产精品电影网站| 在线欧美一级视频| 一区二区福利视频| 国产精品久久网| 国产又黄又猛又粗又爽的视频| 情事1991在线| 亚洲婷婷在线视频| 午夜偷拍福利视频| 亚洲大片在线观看| 国产伦精品一区二区三区四区视频| 国产精品视频免费看| 跑男十一季在线观看免费| 国产亚洲精品综合一区91| 欧美日韩成人免费视频| 北条麻妃在线视频| 69久久夜色精品国产69| av资源在线观看免费高清| 欧洲成人一区| 久久综合成人| 久久精品日韩欧美| 精品国产99久久久久久| 欧洲一级毛片| 在线观看免费黄色小视频| 日韩另类视频| 极品裸体白嫩激情啪啪国产精品| 无码专区aaaaaa免费视频| 好吊色视频在线观看| 精东粉嫩av免费一区二区三区| 日韩电影中文字幕av| 亚洲国产精品免费在线观看| 美女毛片一区二区三区四区| 青青视频在线免费观看| 国产精品久久久久国产a级| 精品国产制服丝袜高跟| 国产一区二区在线视频你懂的| 欧美日韩国产综合新一区| 中文字幕在线字幕中文| 国产高清视频网| 日韩精品卡一| 免费不卡av| 欧美视频免费播放| 亚洲欧美一区二区三区情侣bbw| 欧美粗暴jizz性欧美20| 亚洲第一精品电影| 国产xxx视频| 色婷婷精品大视频在线蜜桃视频| 亚洲视频小说图片| 国产午夜无码视频在线观看| 成人午夜激情在线| 成人福利电影| 国产亚av手机在线观看| 日韩欧美精品久久| 在线亚洲欧美专区二区| 在线观看亚洲精品| 中文字幕亚洲一区二区三区| 精品国产乱码一区二区| 不卡的在线视频| jizz日本18| 精品奇米国产一区二区三区| 成人激情直播| 另类激情亚洲| 欧美午夜一区二区三区| 国产一级一片免费播放放a| av色综合久久天堂av综合| 99视频都是精品热在线播放| 欧美日韩国产一区| 国产精品色午夜在线观看| 国产精品一区二区人妻喷水| 国产一二区视频| 国产精品入口麻豆九色| 再深点灬舒服灬太大了添少妇视频| 久久激情免费视频| 97人人模人人爽人人喊中文字| 视频二区一区| 日韩在线观看免费高清完整版| 久久夜色撩人精品| 日韩欧美国产亚洲| 国产主播福利在线| 成人短剧在线观看| 91热福利电影| 久久久久99精品成人片毛片| 成人性片免费| 五月天婷婷视频| 亚洲不卡在线视频| 久久久久中文字幕亚洲精品| 色欧美激情视频在线| 97精品久久久久中文字幕| 欧美成人欧美edvon| 成人不卡免费视频| 青青热久免费精品视频在线18| 在线视频欧美精品| 国产尤物在线观看| 一本色道久久加勒比精品| 2019中文字幕在线电影免费| 亚洲精品一二区| 亚洲一区二区三区无码久久| 超碰av女优在线| 久久视频精品在线| 日韩中文在线电影| 91高清国产视频| 国产伦精品一区| 2012中文字幕在线视频| 在线看片你懂的| 国产一卡二卡3卡4卡四卡在线| 欧美激情欧美狂野欧美精品| www99xav| 亚洲丰满少妇videoshd| 69精品丰满人妻无码视频a片| 91香蕉视频网址| av资源亚洲| 国产一级成人av| 成人在线免费视频观看| 国产亚洲一区二区在线观看| 四虎成人永久地址| 亚洲成人一区在线观看| 成年人免费在线播放| 成人片免费看| 欧美不卡视频在线观看| 一级黄色片大全| 国产精品久久久久久成人| 性一交一乱一乱一视频| 狠狠色伊人亚洲综合网站l| 亚洲欧美偷拍另类| 99蜜月精品久久91| 99久久99久久免费精品蜜臀| 成人性做爰aaa片免费看不忠| 日韩精品人妻中文字幕| 久久国产精品精品国产色婷婷| 日韩一区二区不卡视频| 69xxx免费视频| www.黄色在线| 美国成人xxx| 国产毛片精品国产一区二区三区| www.久久av| 久久激情五月丁香伊人| 精品久久久国产| 天天影视久久综合| 亚洲欧美成人vr| 色妞欧美日韩在线| 六月丁香婷婷在线| 精品国内片67194| wwwwww.欧美系列| av成人免费看| 亚洲天堂手机版| 亚洲69av| 精品欧美一区二区在线观看视频| 国产精品美女免费视频| 午夜av免费观看| 欧美香蕉大胸在线视频观看| 亚洲网站情趣视频| 欧洲精品视频在线观看| 极品魔鬼身材女神啪啪精品| 国产亚洲福利社区一区| 欧美成人在线影院| 日本在线观看高清完整版| 日本不卡免费高清视频| 成人国产在线视频| 中文字幕影音先锋| 中文字幕乱码免费| 亚洲综合av一区| 三年片免费观看大全| 一级黄色免费毛片| 先锋资源在线视频| www国产亚洲精品| 久久精品ww人人做人人爽| 国产白丝精品91爽爽久久| 青青草91视频| 国产欧美精品xxxx另类| 久草在线新资源| 国产精品三级在线| 黑人精品无码一区二区三区AV| 亚洲色图欧美日韩| 自拍偷自拍亚洲精品播放| 在线成人www免费观看视频| 在线观看免费视频高清游戏推荐| 欧美午夜免费电影| 日本一本高清视频| 一区三区二区视频| 毛片在线不卡| 在线成人午夜影院| 免费国产黄色片| 欧美影视一区二区| 国产精品久久久久久亚洲av| 欧美人与拘性视交免费看| 精品视频一二区| seba5欧美综合另类| 精品一区二区三区高清免费不卡| 久久精品亚洲成在人线av网址| 天天干在线观看| 51久久夜色精品国产麻豆| 黄色在线观看国产| 久久久噜噜噜久噜久久综合| 国产三级国产精品国产专区50| 香蕉久久夜色精品国产更新时间|