【HTML——粒子 特效】

camera = new THREE.PerspectiveCamera( 75, w / h, 1, 3000 );

camera.position.z = 1000;

scene = new THREE.Scene();

var PI2 = Math.PI * 2;

var program = function ( context ) {

context.beginPath();

context.arc( 0, 0, 1, 0, PI2, true );

context.closePath();

context.fill();

}

group = new THREE.Object3D();

scene.add( group );

var t = new THREE.TorusGeometry( 450, 250, 12, 12, PI2);

for ( var i = 0; i < t.vertices.length; i++ ) {

particle = new THREE.Particle(

new THREE.ParticleCanvasMaterial( { color: 0xEA80B0, program: program } ) );

particle.position.x = 0;

particle.position.y = 0;

particle.position.z = 0;

particle.scale.x = particle.scale.y = 10;

y:t.vertices[i].y,z:t.vertices[i].z,ease:Power2.easeInOut,delay:((i + 1)/10)});

makeTween(particle.position,i,t.vertices[i].x,t.vertices[i].y,t.vertices[i].z,i+60);

group.add( particle );

}

renderer = new THREE.CanvasRenderer();

renderer.setSize( w, h );

container.appendChild( renderer.domElement );

document.addEventListener( ‘mousemove’, onDocumentMouseMove, false );

document.addEventListener( ‘touchstart’, onDocumentTouchStart, false );

document.addEventListener( ‘touchmove’, onDocumentTouchMove, false );

window.addEventListener( ‘resize’, onWindowResize, false );

}

function onWindowResize() {

w = window.innerWidth;

h = window.innerHeight;

camera.aspect = w/h;

camera.updateProjectionMatrix();

renderer.setSize( w, h );

}

function onDocumentMouseMove( event ) {

mouseX = event.clientX - w/2;

mouseY = event.clientY - h/2;

}

function onDocumentTouchStart( event ) {

if ( event.touches.length === 1 ) {

event.preventDefault();

mouseX = event.touches[ 0 ].pageX - w/2;

mouseY = event.touches[ 0 ].pageY - h/2;

}

}

function onDocumentTouchMove( event ) {

if ( event.touches.length === 1 ) {

event.preventDefault();

mouseX = event.touches[ 0 ].pageX - w/2;

mouseY = event.touches[ 0 ].pageY - h/2;

}

}

function animate() {

requestAnimationFrame( animate );

render();

}

function render() {

camera.position.x += ( mouseX - camera.position.x ) * 0.05;

camera.position.y += ( - mouseY - camera.position.y ) * 0.05;

camera.lookAt( scene.position );

group.rotation.x += 0.01;

group.rotation.y += 0.02;

renderer.render( scene, camera );

}

// simple tween

function makeTween(o,d,tx,ty,tz,t){

var cnt=0;

var f=function(){

cnt++; if(cnt>d){

if (cnt>=t+d){o.x = tx; o.y = ty; o.z = tz;

clearInterval(o.tweenInterval);

console.log(“stopped”+cnt);

} else {

o.x =linearTween(cnt-d,0,tx,t);

o.y =linearTween(cnt-d,0,ty,t);

o.z =linearTween(cnt-d,0,tz,t);

} } }

clearInterval(o.tweenInterval);

o.tweenInterval = setInterval(f,1000/60);

}

function linearTween(t, b, c, d) {return c*t/d + b;};

[

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ndroid开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值