html5的canvas实现3d雪花飘舞效果


Posted in HTML / CSS onDecember 27, 2013

复制代码
代码如下:

var SCREEN_WIDTH = window.innerWidth;
var SCREEN_HEIGHT = window.innerHeight;</p> <p> var container;</p> <p> var particle;</p> <p> var camera;
var scene;
var renderer;</p> <p> var mouseX = 0;
var mouseY = 0;</p> <p> var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;

var particles = [];
var particleImage = new Image();//THREE.ImageUtils.loadTexture( "img/ParticleSmoke.png" );
particleImage.src = 'images/ParticleSmoke.png'; </p> <p>

function init() {</p> <p> container = document.createElement('div');
document.body.appendChild(container);</p> <p> camera = new THREE.PerspectiveCamera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
camera.position.z = 1000;</p> <p> scene = new THREE.Scene();
scene.add(camera);

renderer = new THREE.CanvasRenderer();
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
var material = new THREE.ParticleBasicMaterial( { map: new THREE.Texture(particleImage) } );

for (var i = 0; i < 500; i++) {</p> <p> particle = new Particle3D( material);
particle.position.x = Math.random() * 2000 - 1000;
particle.position.y = Math.random() * 2000 - 1000;
particle.position.z = Math.random() * 2000 - 1000;
particle.scale.x = particle.scale.y = 1;
scene.add( particle );

particles.push(particle);
}</p> <p> container.appendChild( renderer.domElement );</p> <p>
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
document.addEventListener( 'touchstart', onDocumentTouchStart, false );
document.addEventListener( 'touchmove', onDocumentTouchMove, false );

setInterval( loop, 1000 / 60 );

}

function onDocumentMouseMove( event ) {</p> <p> mouseX = event.clientX - windowHalfX;
mouseY = event.clientY - windowHalfY;
}</p> <p> function onDocumentTouchStart( event ) {</p> <p> if ( event.touches.length == 1 ) {</p> <p> event.preventDefault();</p> <p> mouseX = event.touches[ 0 ].pageX - windowHalfX;
mouseY = event.touches[ 0 ].pageY - windowHalfY;
}
}</p> <p> function onDocumentTouchMove( event ) {</p> <p> if ( event.touches.length == 1 ) {</p> <p> event.preventDefault();</p> <p> mouseX = event.touches[ 0 ].pageX - windowHalfX;
mouseY = event.touches[ 0 ].pageY - windowHalfY;
}
}</p> <p> //</p> <p> function loop() {</p> <p> for(var i = 0; i<particles.length; i++)
{</p> <p> var particle = particles[i];
particle.updatePhysics();

with(particle.position)
{
if(y<-1000) y+=2000;
if(x>1000) x-=2000;
else if(x<-1000) x+=2000;
if(z>1000) z-=2000;
else if(z<-1000) z+=2000;
}
}

camera.position.x += ( mouseX - camera.position.x ) * 0.05;
camera.position.y += ( - mouseY - camera.position.y ) * 0.05;
camera.lookAt(scene.position); </p> <p> renderer.render( scene, camera );</p> <p>
}

HTML / CSS 相关文章推荐
css3的transform中scale缩放详解
Dec 08 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
Apr 24 HTML / CSS
CSS3区域模块region相关编写示例
Aug 28 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 HTML / CSS
CSS3实现莲花绽放的动画效果
Nov 06 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
Mar 15 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
Mar 10 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
May 12 HTML / CSS
html5使用canvas绘制一张图片
Dec 15 HTML / CSS
HTML5 Canvas 旋转风车绘制
Aug 18 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
Mar 20 HTML / CSS
HTML5 层的叠加的实现
Jul 07 HTML / CSS
html5 canvas实现圆形时钟代码分享
Dec 25 #HTML / CSS
html5 css3网站菜单实现代码
Dec 23 #HTML / CSS
html5 自定义播放器核心代码
Dec 20 #HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
Dec 17 #HTML / CSS
利用html5的websocket实现websocket聊天室
Dec 12 #HTML / CSS
html5拍照功能实现代码(htm5上传文件)
Dec 11 #HTML / CSS
html5教程实现Photoshop渐变色效果
Dec 04 #HTML / CSS
You might like
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
php的curl封装类用法实例
2014/11/07 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
JS之小练习代码
2008/10/12 Javascript
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python解决字典中的值是列表问题的方法
2013/03/04 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
python输出带颜色字体实例方法
2019/09/01 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
关于逃课的检讨书
2014/01/23 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
党员公开承诺书范文
2014/03/25 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
介绍信范文大全
2015/05/07 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python