var userAgent = window.navigator.userAgent.toLowerCase(); $.support.transform = typeof $("body").css("transform") === "string"; $.support.transition = typeof $("body").css("transitionProperty") === "string"; var par_handle = Math.floor(Math.random() * 3) + 1; //alert(par_handle) var wT = $(window).scrollTop(); var wH = $(window).height(); var wW = $(window).width(); function init_setup() { var container, renderer, particle, mouseX = 0, mouseY = 0, windowW = wW + 500, windowH = wH + 200, windowHalfX = windowW / 2, windowHalfY = windowH / 2; window.rotateSpeed = 2; window.scene = new THREE.Scene(); window.group = new THREE.Object3D(); window.program, window.camera; init(); animate(); function init() { container = document.createElement('div'); container.id = "set-canvs"; $('#ptclArea').append(container); camera = new THREE.PerspectiveCamera(75, windowW / windowH, 1, 3000); camera.position.z = 1000; scene.add(camera); scene.add(group); var PI2 = Math.PI * 2; //0, 0, 1, 0, Math.PI * 2, true par_handle = 1; program = function (context) { if (par_handle == 1) { /* version CIRCLE */ context.beginPath(); context.arc(0, 0, 4, 0, PI2, true); context.closePath(); context.fill(); } else if (par_handle == 2) { /* version TRI */ context.beginPath(); context.moveTo(0, 0); context.lineTo(5, 0); context.lineTo(3, -5.66); context.closePath(); context.fill(); } else { /* version LINE */ context.beginPath(); context.moveTo(0, 0); context.lineTo(90, 90); context.lineWidth = 2; context.stroke(); } } renderer = new THREE.CanvasRenderer(); renderer.setSize(windowW, windowH); container.appendChild(renderer.domElement); document.addEventListener('mousemove', onDocumentMouseMove, false); document.addEventListener('touchstart', onDocumentTouchStart, false); document.addEventListener('touchmove', onDocumentTouchMove, false); } function onDocumentMouseMove(event) {mouseX = event.clientX - windowHalfX; mouseY = event.clientY - windowHalfY; } function onDocumentTouchStart(event) {if (event.touches.length == 1) {event.preventDefault(); mouseX = event.touches[0].pageX - windowHalfX; mouseY = event.touches[0].pageY - windowHalfY; } } function onDocumentTouchMove(event) {if (event.touches.length == 1) {event.preventDefault(); mouseX = event.touches[0].pageX - windowHalfX; mouseY = event.touches[0].pageY - windowHalfY; } } function animate() {requestAnimationFrame(animate); render(); } var t = 0; function render() { //camera.position.x = Math.sin(t * 0.005 * rotateSpeed) * 1000; camera.position.z = Math.cos(t * 0.005 * rotateSpeed) * 1000; camera.position.x += (-mouseX - camera.position.x) * 0.1; camera.position.y += (-mouseY - camera.position.y) * 0.1; camera.lookAt(scene.position); t++; renderer.render(scene, camera); } }; function motion_setup() { if (par_handle == 1) { var p_count = 100; var g_rate = 10; } else if (par_handle == 2) { var p_count = 100; var g_rate = 5; } else { var p_count = 40; var g_rate = 7.5; } var //par_limit = 40, //d_rate = 1.5, //g_vector = new THREE.Vector3(g_rate, g_rate, g_rate), //d_vector = new THREE.Vector3(d_rate, d_rate, d_rate), //t, particles = group.children, //colors = [0xd3dfad, 0xb0cd5a, 0x99cc00, 0xd3dfad, 0xb0cd5a];//颜色 //colors = [0xffdfdd, 0xff5a00, 0xffb400, 0xe8985d, 0xffc776 ,0xd3dfad, 0xb0cd5a];//颜色 colors = [0xe03e03, 0xf1763c, 0xf7ad8a, 0xf8bfa3, 0xf1763c ];//颜色 function on() { for (var i = 0; i < p_count; i++) { particle = new THREE.Particle( new THREE.ParticleCanvasMaterial({ color: colors[~~(Math.random() * 5)], program: program }) );//alert(~~(Math.random() * 5)) 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 = Math.random() * 5; group.add(particle); } scene.add(group); //var ctx = document.getElementsByTagName('canvas')[1].getContext('2d'); /*(function composite() { setTimeout(function () { ctx.globalCompositeOperation = 'lighter'; if (ctx.globalCompositeOperation != 'lighter') composite(); }, 100); })();*/ } on(); }; init_setup(); motion_setup();