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 相关文章推荐
详解CSS样式中的 !important * _ 符号
Mar 09 HTML / CSS
CSS3 transform的skew属性值图文详解
Jul 21 HTML / CSS
使用css3实现的windows8开机加载动画
Dec 09 HTML / CSS
CSS3哪些新特性值得称赞
Mar 02 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
Jun 22 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
May 17 HTML / CSS
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
Jan 06 HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
Dec 31 HTML / CSS
利用Storage Event实现页面间通信的示例代码
Jul 26 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
Aug 29 HTML / CSS
浅谈移动端网页图片预加载方案
Nov 05 HTML / CSS
深入理解margin塌陷和margin合并的解决方案
Jun 26 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输入输出流学习笔记
2015/05/12 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
php实现多城市切换特效
2015/08/09 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Javascript模块模式分析
2008/05/16 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
五种Python转义表示法
2020/11/27 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
python绘制汉诺塔
2021/03/01 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
演讲比赛策划方案
2014/06/11 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
先进集体申报材料
2014/12/25 职场文书
安阳殷墟导游词
2015/02/10 职场文书
初中团委工作总结
2015/08/13 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
高中信息技术教学反思
2016/02/16 职场文书
高三化学教学反思
2016/02/22 职场文书
800字作文之大雪
2019/12/04 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
nginx容器方式反向代理实战
2022/04/18 Servers