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实现背景模糊的三种方式
Mar 09 HTML / CSS
css3.0 图形构成实例练习二
Mar 19 HTML / CSS
CSS3实现头像旋转效果
Mar 13 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
May 07 HTML / CSS
CSS3 分类菜单效果
May 27 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
Feb 08 HTML / CSS
分享一个页面平滑滚动小技巧(推荐)
Oct 23 HTML / CSS
HTML5上传文件显示进度的实现代码
Aug 30 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
Jan 09 HTML / CSS
HTML5中原生的右键菜单创建方法
Jun 28 HTML / CSS
Html5获取高德地图定位天气的方法
Dec 26 HTML / CSS
浅谈Html5页面打开app的一些思考
Mar 30 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
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
Python标准库与第三方库详解
2014/07/22 Python
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
Python正则捕获操作示例
2017/08/19 Python
python方向键控制上下左右代码
2018/01/20 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
教师党员公开承诺事项
2014/05/28 职场文书
医学求职自荐信
2014/06/21 职场文书
文明好少年事迹材料
2014/08/19 职场文书
单位委托书怎么写
2014/09/21 职场文书
教师四风问题整改措施
2014/09/25 职场文书
python基础之类属性和实例属性
2021/10/24 Python
Go并发4种方法简明讲解
2022/04/06 Golang