HTML5   发布时间:2022-04-25  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了HTML5 Canvas实现360度全景图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

很多购物网站现在都支持360实物全景图像,可以360度任意选择查看样品,这样

对购买者来说是@L_772_2@很好的消费体验,网上有很多这样的插件都是基于JQuery实现的

有收费的也有免费的,其实很好用的@L_772_2@叫3deye.js的插件。该插件支持桌面与移动终

端iOS与Android, 它的demo程序:http://www.voidcanvas.com/demo/28823deye/

自己玩了玩这个Demo以后,照着它的思路,用HTML5 Canvas也实现了类似的功能

所以先说一下它的360度全景图的原理

1.      首先需要对实物拍照,间隔是每张照片旋转15度,所以需要23张照片。

2.      照片准备好了以后,尽量选择JPG格式,裁剪到适当大小。

3.      JavaSCRIPT中预加载所有照片,可以配合进度条显示加载精度

4.      创建/获取Canvas对象,加上鼠标监听事件,当鼠标左右移动时候,适度的绘制不

同帧。大致的原理就是这样,简单吧!

实现代码

[html]  view plain copy

HTML5 Canvas实现360度全景图

HTML5 Canvas实现360度全景图

  1. <!DOCTYPE html>  
  2. <html>  
  3. head  Meta charset=utf-8"  title>Full 360 degree view</script        var ctx = null; // global variable 2d context  
  4.         var frame = 1; // 23  
  5.         var width = 0;  
  6.         var height = 0;  
  7.         var started = false;  
  8.         var images = new array();  
  9.         var startedX = -1;  
  10.       window.onload = function() {  
  11.         var canvas = document.getElementById("fullview_canvas");  
  12.         canvas.width = 440;// window.innerWidth;  
  13.         canvas.height = 691;//window.innerHeight;  
  14.         width = canvas.width;  
  15.         height = canvas.height;  
  16.         var bar = document.getElementById('loadProgressBar');  
  17.         for(var i=1; i24; i++)  
  18.         {  
  19.             bar.value = i;  
  20.             if(i10)  
  21.             {  
  22.                 images[i] = new Image();  
  23.                 images[i].src = "0" + i + ".jpg";  
  24.             }  
  25.             else   
  26.             {  
  27.                 images[i] = new Image();  
  28.                 images[i].src = i + ".jpg";  
  29.             }  
  30.         }  
  31.         ctx = canvas.getContext("2d");  
  32.           
  33.         // mouse event  
  34.         canvas.addEventListener("mousedown", doMouseDown, falsE);  
  35.         canvas.addEventListener('mousemove', doMouseMove, falsE);  
  36.         canvas.addEventListener('mouseup',   doMouseUp,108); list-style: @R_772_6221@l-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;">        // loaded();  
  37.         // frame = 1  
  38.         frame = 1;  
  39.         images[frame].onload = function() {  
  40.             redraw();  
  41.             bar.style.display = 'none';  
  42.     }  
  43.    @R_55_3816@ doMouseDown(event) {  
  44.         var x = event.pageX;  
  45.         var y = event.pageY;  
  46.         var canvas = event.target;  
  47.         var loc = getPointOnCanvas(canvas, x, y);  
  48.         console.log("mouse down at point( x:" + loc.x + ", y:" + loc.y + ")");  
  49.         startedX = loc.x;  
  50.         started = true;  
  51.     }  
  52.       
  53.    @R_55_3816@ doMouseMove(event) {  
  54.         if (started) {  
  55.             var count = @H_840_102@math.floor(Math.abs((startedX - loc.X)/30));  
  56.             var frameIndex = @H_840_102@math.floor((startedX - loc.X)/30);  
  57.             while(count > 0)  
  58.             {                 
  59.                 console.log("frameIndex = " + frameIndeX);  
  60.                 count--;      
  61.                 if(frameIndex                 {  
  62.                     frameIndex--;  
  63.                     frame++;  
  64.                 } else if(frameIndex < 0)  
  65.                     frameIndex++;  
  66.                     frame--;  
  67.                 }  
  68.                 else if(frameIndex == 0)  
  69.                 {  
  70.                     break;  
  71.                                   
  72.                 if(frame >24)  
  73.                     frame = 1;  
  74.                 }  
  75. <= 0)  
  76.                     frame = 23;  
  77.                 redraw();  
  78.       
  79.    @R_55_3816@ doMouseUp(event) {  
  80.         console.log("mouse up Now");  
  81.             doMouseMove(event);  
  82.             startedX = -1;  
  83.             started = false;  
  84.         }  
  85.   
  86.    @R_55_3816@ getPointOnCanvas(canvas, y) {  
  87.         var bBox = canvas.getBoundingClientRect();  
  88.         return { x: x - bBox.left * (canvas.width  / bBox.width),  
  89.                 y: y - bBox.top  * (canvas.height / bBox.height)  
  90.                 };  
  91.    @R_55_3816@ loaded() {  
  92.         setTimeout( UPDATE, 1000/8);  
  93.    @R_55_3816@ redraw()  
  94.     {  
  95.         // var imageObj = document.createElement("img");  
  96.         // var imageObj = new Image();  
  97.         var imageObj = images[frame];  
  98.         ctx.clearRect(0, 0, width, height)  
  99.         ctx.drawImage(imageObj, height);  
  100.    @R_55_3816update() {  
  101.         redraw();  
  102.         frame++;  
  103.         if (frame >= 23) frame = 1;  
  104. bodyprogress id="loadProgressBar" value="0" @H_268_98@max="23">progress>   
  105. canvas id="fullview_canvas"canvasbutton onclick="loaded()">Auto Playbutton>  

Demo演示文件@R_696_11313@址->http://download.csdn.net/detail/jia20003/6670901

大佬总结

以上是大佬教程为你收集整理的HTML5 Canvas实现360度全景图全部内容,希望文章能够帮你解决HTML5 Canvas实现360度全景图所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。