体验效果:http://hovertree.com/texiao/html5/10.htm

下载:http://hovertree.com/hvtart/bjae/t16oddyt.htm

代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Full 360 degree View - HoverTree</title>
<style>
.hvtholder {
margin: 0px auto;
width: 789px;
text-align: center;
}
a {
color: blue;
}
</style>
<script type="text/javascript" src="http://hovertree.com/ziyuan/jquery/jquery-1.11.3.min.js"></script>
<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;
$(function () {
var canvas = document.getElementById("hov"+"ertree_canvas");
canvas.width = 440;// window.innerWidth;
canvas.height = 691;//window.innerHeight;
width = canvas.width;
height = canvas.height;
var bar = document.getElementById('loadHove'+'rTreeBar');
for (var i = 1; i < 24; i++) {
bar.value = i;
if (i < 10) {
images[i] = new Image();
images[i].src = "10/hovertree0" + i + ".jpg";
}
else {
images[i] = new Image();
images[i].src = "10/hovert"+"ree" + 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';
}
$("#goHovertr"+"ee").on("click", function () { gohovertree();})
}) 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 gohovertree() {
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>
<div class="hvtholder">
<h3>360度旋转产品展示</h3><a href="http://hovertree.com">首页</a> <a href="http://hovertree.com/texiao/">特效</a> <a href="http://hovertree.com/hvtart/bjae/49kk0ib8.htm">原文</a>
<br />点击下面按钮旋转<br /><button id="goHovertree">点击旋转</button>
<br />
</div>
<div style="width:640px;margin:0 auto;"> <progress id="loadHoverTreeBar" value="0" max="23"></progress> <canvas id="hovertree_canvas">您的浏览器不支持HTML5,使用支持HTTML5的浏览器,何问起,hovertree.com</canvas> </div> </body>
</html>

更多: http://www.cnblogs.com/roucheng/p/texiao.html

最新文章

  1. 领域驱动设计(DDD)部分核心概念的个人理解
  2. oracle过程中动态语句实现
  3. javascript 的 clientX用法
  4. SQLServer 获得所有表结构(包括表名及字段)
  5. 开源搜索引擎Iveely 0.7.0发布,不一样,那就让他不一样!
  6. Remove Duplicates from Sorted List II leetcode java
  7. 使用Maven将Hadoop2.2.0源码编译成Eclipse项目
  8. Jetty入门(1-3)Eclipse集成gradle-Gretty插件或maven-jetty插件运行应用
  9. 网络七层OSI模型简介
  10. web前端学习python之第一章_基础语法(一)
  11. spring 自己创建配置类
  12. Python应用——自定义函数:分割PDF文件函数
  13. 通过User-agent进行SQL注入
  14. GraphQL入门1
  15. Java Head First &amp; 多态
  16. L05-Linux部署msmtp+mutt发送邮件
  17. 红黑树(R-B Tree)
  18. MFC非模态添加进程控件方法二(自定义消息方法)
  19. Edgware Feign hystrix-dashboard
  20. 10-hibernate单表操作-组件属性

热门文章

  1. ubuntu(Mint-17)修改dns
  2. Hadoop 生态系统
  3. Oracle外键不加索引会引起死锁问题
  4. 多条件动态LINQ 组合查询
  5. 并行编程多线程之Parallel
  6. List的遍历和删除元素
  7. 使用 Portable Class Library(可移植类库)开发 Universal Windows App
  8. Python Django 开发 2 数据库
  9. Maven更新父子模块的版本号
  10. ARM Linux 3.x的设备树(Device Tree)