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

主頁 > 知識庫 > HTML5 Canvas實現360度全景圖的示例代碼

HTML5 Canvas實現360度全景圖的示例代碼

熱門標簽:江蘇智能電銷機器人哪家好 電銷機器人電話用什么卡 四川點撥外呼系統 成都智能外呼系統平臺 當涂高德地圖標注 鎮江智能外呼系統有效果嗎 南寧點撥外呼系統哪家公司做的好 云南大理400電話申請官方 黃島區地圖標注

很多購物網站現在都支持360實物全景圖像,可以360度任意選擇查看樣品,這樣對購買者來說是一個很好的消費體驗,網上有很多這樣的插件都是基于jQuery實現的有收費的也有免費的,其實很好用的一個叫3deye.js的插件。該插件支持桌面與移動終端iOS與Android, 它的demo程序:http://www.voidcanvas.com/demo/28823deye/

自己玩了玩這個Demo以后,照著它的思路,用HTML5 Canvas也實現了類似的功能。

所以先說一下它的360度全景圖的原理

1. 首先需要對實物拍照,間隔是每張照片旋轉15度,所以需要23張照片。
2.照片準備好了以后,盡量選擇JPG格式,裁剪到適當大小。
3.JavaScript中預加載所有照片,可以配合進度條顯示加載精度
4.創建/獲取Canvas對象,加上鼠標監聽事件,當鼠標左右移動時候,適度的繪制不同幀。大致的原理就是這樣,簡單吧!

實現代碼:

<!DOCTYPE html>  
<html>  
<head>  
  <meta charset=utf-8">  
  <title>Full 360 degree View</title>  
  <script>  
        var ctx = null; // global variable 2d context  
        var frame = 1; // 23  
        var width = 0;  
        var height = 0;  
        var started = false;  
        var images = new Array();  
        var startedX = -1;  
      window.onload = function() {  
        var canvas = document.getElementById("fullview_canvas");  
        canvas.width = 440;// window.innerWidth;  
        canvas.height = 691;//window.innerHeight;  
        width = canvas.width;  
        height = canvas.height;  
        var bar = document.getElementById('loadProgressBar');  
        for(var i=1; i<24; i++)  
        {  
            bar.value = i;  
            if(i<10)  
            {  
                images[i] = new Image();  
                images[i].src = "0" + i + ".jpg";  
            }  
            else   
            {  
                images[i] = new Image();  
                images[i].src = i + ".jpg";  
            }  
        }  
        ctx = canvas.getContext("2d");  
          
        // mouse event  
        canvas.addEventListener("mousedown", doMouseDown, false);  
        canvas.addEventListener('mousemove', doMouseMove, false);  
        canvas.addEventListener('mouseup',   doMouseUp, false);  
        // loaded();  
          
        // frame = 1  
        frame = 1;  
        images[frame].onload = function() {  
            redraw();  
            bar.style.display = 'none';  
        }  
    }  
    function doMouseDown(event) {  
        var x = event.pageX;  
        var y = event.pageY;  
        var canvas = event.target;  
        var loc = getPointOnCanvas(canvas, x, y);  
        console.log("mouse down at point( x:" + loc.x + ", y:" + loc.y + ")");  
        startedX = loc.x;  
        started = true;  
    }  
      
    function doMouseMove(event) {  
        var x = event.pageX;  
        var y = event.pageY;  
        var canvas = event.target;  
        var loc = getPointOnCanvas(canvas, x, y);  
        if (started) {  
            var count = Math.floor(Math.abs((startedX - loc.x)/30));  
            var frameIndex = Math.floor((startedX - loc.x)/30);  
            while(count > 0)  
            {                 
                console.log("frameIndex = " + frameIndex);  
                count--;      
                if(frameIndex > 0)  
                {  
                    frameIndex--;  
                    frame++;  
                } else if(frameIndex < 0)  
                {  
                    frameIndex++;  
                    frame--;  
                }  
                else if(frameIndex == 0)  
                {  
                    break;  
                }  
                                  
                if(frame >= 24)  
                {  
                    frame = 1;  
                }  
                if(frame <= 0)  
                {  
                    frame = 23;  
                }  
                redraw();  
            }  
        }  
    }  
      
    function doMouseUp(event) {  
        console.log("mouse up now");  
        if (started) {  
            doMouseMove(event);  
            startedX = -1;  
            started = false;  
        }  
    }  
  
    function getPointOnCanvas(canvas, x, y) {  
        var bbox = canvas.getBoundingClientRect();  
        return { x: x - bbox.left * (canvas.width  / bbox.width),  
                y: y - bbox.top  * (canvas.height / bbox.height)  
                };  
    }  
      
    function loaded() {  
        setTimeout( update, 1000/8);  
    }  
    function redraw()  
    {  
        // var imageObj = document.createElement("img");  
        // var imageObj = new Image();  
        var imageObj = images[frame];  
        ctx.clearRect(0, 0, width, height)  
        ctx.drawImage(imageObj, 0, 0, width, height);  
    }  
    function update() {  
        redraw();  
        frame++;  
        if (frame >= 23) frame = 1;  
        setTimeout( update, 1000/8);  
    }  
  </script>  
</head>  
<body>  
<progress id="loadProgressBar" value="0" max="23"></progress>   
<canvas id="fullview_canvas"></canvas>  
<button onclick="loaded()">Auto Play</button>  
</body>  
</html>  

Demo演示文件下載地址-> fullview_jb51.rar

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

標簽:廣西 佳木斯 淮安 西寧 咸寧 十堰 酒泉 南京

巨人網絡通訊聲明:本文標題《HTML5 Canvas實現360度全景圖的示例代碼》,本文關鍵詞  HTML5,Canvas,實現,360度,全景,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5 Canvas實現360度全景圖的示例代碼》相關的同類信息!
  • 本頁收集關于HTML5 Canvas實現360度全景圖的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲电影一级片| 91精彩视频在线| 国产成人精品综合在线观看| 在线观看日韩毛片| 樱桃国产成人精品视频| 91福利视频久久久久| 亚洲黄色av一区| 91精品国产高清一区二区三区| 亚洲视频 欧洲视频| 色综合久久99| 三级成人在线视频| 久久久久久久精| 97aⅴ精品视频一二三区| 亚洲精品欧美在线| 亚洲精品一区二区三区福利| 国产大片一区二区| 一区二区三区欧美视频| 日韩美女主播在线视频一区二区三区 | 日韩不卡一区二区三区| 精品国产99国产精品| 色一区在线观看| 黄色精品一二区| 亚洲制服丝袜av| 国产精品女人毛片| 日韩亚洲欧美中文三级| 色综合夜色一区| 国产高清久久久久| 狠狠色综合日日| 蜜桃精品视频在线| 日本在线不卡一区| 一区二区三区中文字幕电影| 欧美国产日韩在线观看| 精品福利av导航| 欧美日韩在线三区| 欧美艳星brazzers| 色噜噜偷拍精品综合在线| 丁香婷婷综合五月| 久久国产免费看| 国产麻豆精品久久一二三| 久久99精品久久久久久久久久久久| 亚洲一区二三区| 视频一区视频二区中文字幕| 亚洲va国产天堂va久久en| 亚洲 欧美综合在线网络| 亚洲影视在线播放| 视频在线观看一区| 国产盗摄视频一区二区三区| 波多野洁衣一区| 日韩欧美中文一区二区| 久久日一线二线三线suv| 一色桃子久久精品亚洲| 亚洲图片另类小说| 日韩高清不卡一区二区| 国产一区不卡在线| 欧美三级在线视频| 中文字幕一区av| 日韩国产欧美一区二区三区| 大胆欧美人体老妇| 7799精品视频| 亚洲精品写真福利| 国产91精品入口| 欧美不卡视频一区| 午夜一区二区三区在线观看| 国产一区二区三区四| 欧美一区日本一区韩国一区| 中文字幕一区二区日韩精品绯色| 日韩福利电影在线观看| 欧美人牲a欧美精品| 亚洲综合成人在线视频| 99热在这里有精品免费| 中文字幕亚洲一区二区va在线| 麻豆精品久久精品色综合| 欧美日韩一区小说| 亚洲一区av在线| 日本高清不卡视频| 亚洲一区二区av电影| 欧美精品一卡二卡| 日本欧美加勒比视频| 91麻豆精品国产91久久久| 五月天亚洲精品| 日韩欧美区一区二| 成人一区在线看| 亚洲国产日韩一级| 欧美大片在线观看一区二区| 国产综合一区二区| 亚洲色图制服丝袜| 欧美精品久久久久久久多人混战| 秋霞午夜av一区二区三区| 日韩视频免费直播| 成人黄色777网| 亚洲国产一区二区三区 | 欧美视频在线不卡| 奇米色777欧美一区二区| 国产婷婷色一区二区三区| 欧美亚洲动漫精品| 日本高清不卡视频| 另类中文字幕网| 亚洲成人三级小说| 亚洲欧洲制服丝袜| 国产精品久久久久久户外露出| 2020国产精品| 成人aa视频在线观看| 欧美精品在线视频| 欧美极品少妇xxxxⅹ高跟鞋 | 久久精品在这里| 欧美成人女星排名| 国产女人水真多18毛片18精品视频 | 国产精品正在播放| 老司机午夜精品99久久| 免费视频一区二区| 一卡二卡欧美日韩| 中文字幕在线播放不卡一区| 日韩一区二区三区高清免费看看| 91免费视频大全| 日本韩国精品在线| 色94色欧美sute亚洲线路一ni | 日韩毛片在线免费观看| 国产精品三级在线观看| 中文字幕在线不卡视频| 国产精品久久久久一区二区三区| 亚洲国产高清aⅴ视频| 亚洲一本大道在线| 九九精品一区二区| 91在线观看免费视频| 欧美三级电影网站| 国产欧美日韩综合精品一区二区| 中文字幕中文乱码欧美一区二区| 亚洲国产精品影院| 99vv1com这只有精品| 91香蕉视频在线| 欧美日韩久久久一区| 国产欧美精品区一区二区三区| 亚洲精品欧美二区三区中文字幕| 一区二区激情视频| 日韩精品久久理论片| 成人网页在线观看| 精品久久一二三区| 亚洲国产三级在线| 欧洲一区二区三区在线| 日韩精品一区二区三区四区| 欧美国产激情二区三区| 日韩影院精彩在线| 一本色道**综合亚洲精品蜜桃冫| 欧美三级视频在线| 久久久久久久久一| 久久精品久久99精品久久| 欧美三级一区二区| 一级精品视频在线观看宜春院 | 亚洲欧洲精品天堂一级| 国产剧情一区在线| 久久久精品影视| 99久久99久久久精品齐齐| 久久日韩粉嫩一区二区三区| 国产老肥熟一区二区三区| 久久久精品国产免大香伊| 国产一区二区三区| 亚洲视频一二三| 日韩女优视频免费观看| 国产成人一区二区精品非洲| 综合在线观看色| 国产午夜精品久久久久久免费视 | 欧美日韩高清影院| eeuss鲁片一区二区三区在线看| 一区二区三区精品视频在线| 久久免费的精品国产v∧| 91黄色激情网站| 国产精品国产成人国产三级| av爱爱亚洲一区| 亚洲18色成人| 18涩涩午夜精品.www| 欧美亚洲综合在线| 日韩高清在线不卡| 亚洲色图在线播放| 欧美一区午夜视频在线观看| 不卡的av网站| 奇米一区二区三区| 日韩美女视频一区二区 | 美脚の诱脚舐め脚责91| 亚洲狼人国产精品| 国产精品午夜免费| 精品毛片乱码1区2区3区| www.日韩精品| av一区二区不卡| 韩国精品主播一区二区在线观看| 一个色在线综合| 亚洲国产成人av| 亚洲视频一区在线| 亚洲欧美成aⅴ人在线观看| 国产日韩欧美不卡在线| 欧美一区二视频| 91精品久久久久久久久99蜜臂| 欧美日韩国产综合草草| 欧美亚洲国产一区二区三区va | 欧美不卡视频一区| 欧美一区二区三区免费视频| 制服.丝袜.亚洲.另类.中文| 欧美成人精品福利| 国产情人综合久久777777| 综合精品久久久| 一区2区3区在线看|