html5人物图片360度立体旋转

体验效果:http://hovertree.com/texiao/html5/10.htm下载:http://hovertree.com/hvtart/bjae/t16oddyt.htm代码如下:Fu

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

体验效果: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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120688.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 有什么类方法或是函数可以查看某个项目的Laravel版本的?

    有什么类方法或是函数可以查看某个项目的Laravel版本的?

    2021年10月17日
  • jira webhook发消息_jenkins webhook

    jira webhook发消息_jenkins webhookJIRAWebhookWebhook1处理webhook事件2变量替换3过滤器3.1JQL3.2Webhook事件类型3.2.1插件和系统事件3.2.2问题时间3.2.3版本事件3.2.4项目事件3.2.5用户事件3.2.6特征状态事件3.2.7备注事件3.2.8Confluencewebhook事件3.3例程请求3.4例程响应3.4.1Confluence…

    2022年10月27日
  • java redis 配置文件_redis配置文件详解(生产环境配置)

    java redis 配置文件_redis配置文件详解(生产环境配置)#当本机为从服务时,设置主服务的连接密码#masterauth#当一个slave失去和master的连接,或者同步正在进行中,slave的行为有两种可能:#1)如果slave-serve-stale-data设置为”yes”(默认值),slave会继续响应客户端请求,可能是正常数据,也可能是还没获得值的空数据。#2)如果slave-serve-stale-data设置为…

    2022年6月11日
  • js数组删除元素_js清空数组的方法

    js数组删除元素_js清空数组的方法js的数组删除,我建议大家使用splice函数,不要使用slice函数,因为slice是返回一个新数组,并不是从原来的数组中删除。比如:leta=[111,222,333,444];a.splice(2,1);上面的代码运行后,a数组的值变成:[111,222,444]假如用slice实现:leta=[111,222,333,444];letb=a.slice(2,1);这时a的值不会改变,而b的值变成了[111,222,444]所以splice是比slice用起来简单的

    2022年10月1日
  • 圈真的决定你的未来?

    圈真的决定你的未来?

    2022年1月6日
  • MFC之COleVariant类

    MFC之COleVariant类COleVariant本质上是一个枚举,用同一种类型来表达不同的子类型。如同boost中的variant。 COleVariant类是对VARIANT结构的封装。  VARIANT结构包含两部分。其一是VARTYPE型的成员变量vt;其二是个联合类型,这个联合包含了VC常用的几乎所有类型。因为联合用的是相同的存储空间,因此对联合的内容的解释依赖于vt。  例如,  若vt的…

    2022年7月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号