Показать сообщение отдельно
  #1 (permalink)  
Старый 23.12.2016, 02:58
Интересующийся
Отправить личное сообщение для nekada Посмотреть профиль Найти все сообщения от nekada
 
Регистрация: 21.11.2016
Сообщений: 28

Зависает снег при скроле
Здравствуйте подскажите кто знает, уже устал ломать голову, снег зависает при использовании колесика мышки, но если использовать скролл окна всё норм.

var SCREEN_WIDTH = window.innerWidth;
			var SCREEN_HEIGHT = window.innerHeight;

			var container;

			var particle;

			var camera;
			var scene;
			var renderer;

			var mouseX = 0;
			var mouseY = 0;

			var windowHalfX = window.innerWidth / 2;
			var windowHalfY = window.innerHeight / 2;
			
			var particles = []; 
			var particleImage = new Image();

			particleImage.src = '/img/ParticleSmoke.png'; 

			function init() {


			//inner
				container = document.createElement('div');
				container.className = "cont_canvas";
				
				//open
				document.body.appendChild(container);
				// down|up																//distance
				camera = new THREE.PerspectiveCamera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
				// area snow
				camera.position.z = 1000;

				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) } );
				//how snow?
				for (var i = 0; i < 199; i++) {

					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); 
				}
				
				//closed
				container.appendChild( renderer.domElement );

	
				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
				document.addEventListener( 'mousedown', onDocumentMouseDown, false );
				document.addEventListener("mousewheel", MouseWheelHandler, false);
				
				//snow speed 
				setInterval( loop, 1000 / 60 );
				
			}
			
			function onDocumentMouseMove( event ) {

				mouseX = event.clientX - windowHalfX;
				mouseY = event.clientY - windowHalfY;
			}
			
			function onDocumentMouseDown( event ) {
				
				mouseX = event.clientX - windowHalfX;
				mouseY = event.clientY - windowHalfY;
			}
			
			function MouseWheelHandler( event ) {
	
			}

			function loop() {

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

					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); 

				renderer.render( scene, camera );

				
			}


Забыл добавить, после использования колесика мыши, снег развисает, если произвести клик левой кнопкой мыши в любой области, но ($).click не дала результата...

Последний раз редактировалось nekada, 23.12.2016 в 03:02.
Ответить с цитированием