Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 23.12.2016, 10:57
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

nekada,
А если убрать
document.addEventListener("mousewheel", MouseWheelHandler, false);

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

Ничего не меняется.... Это я спецом оставил, может кто-то дополнит...
Ответить с цитированием
  #4 (permalink)  
Старый 24.12.2016, 02:46
Интересующийся
Отправить личное сообщение для nekada Посмотреть профиль Найти все сообщения от nekada
 
Регистрация: 21.11.2016
Сообщений: 28

Решил протестировать на некоторых браузерах.
ie 9 - все ок
ie 10 - все ок
ie 11 - все ок
mozila - все ок
opera - проблема есть
chrome - проблема есть

Возможно браузеры по разному понимают

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


или проблема кроется в чем то другом? Подскажите чтонить... кроме как забить уж тяжело это воспринимается в chrome так как использую его

с дурости даже на safari 517 проверил, не поверите проблемы нет! Видимо хром на столько хорошо, что все написанное воспринимает буквально <3 chrome

Последний раз редактировалось nekada, 24.12.2016 в 02:51.
Ответить с цитированием
  #5 (permalink)  
Старый 24.12.2016, 09:01
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от nekada Посмотреть сообщение
Возможно браузеры по разному понимают
Так проверь оно же у тебя один раз определяется, и писать тогда уж так var windowHalfX = SCREEN_WIDTH / 2.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация при скроле Js Dalave1998 Общие вопросы Javascript 12 17.05.2014 03:44
Изменение прозрачности при клике AJIUK jQuery 8 09.03.2014 16:00
при нажатии на раздел меню поворачивается маркер Сергей545 Элементы интерфейса 5 08.12.2013 22:15
При клике на ссылку ничего не происходит gurg0n Элементы интерфейса 2 24.06.2013 11:11
Кратное увеличение при клике на кнопку vabus Элементы интерфейса 2 15.04.2013 20:42