Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.04.2011, 06:04
Аспирант
Отправить личное сообщение для _axl Посмотреть профиль Найти все сообщения от _axl
 
Регистрация: 21.07.2009
Сообщений: 39

помогите оптимизировать пожайлуста
Модераторы, если такие, исправьте "автоматизировать" на "оптимизировать" в заголовке, плз

Пишу скрипт, который будет реализовывать следующую навигациюесть большой (2000 х 1500 пикселей) JPG c картой мира, она выходит за границы экрана, и если пользователь ведет мышкой влево, то экран сдвигается по карте влево, вправо - вправо и т.п. Кроме этого на карте присутствуею блоки с png и текстом.

Chrome показал, что перерисовка после изменения положения карты занимает 11 мс, и таких итераций много, т.к. анимация должна быть плавная. Но плавная как раз не получается - подтупливает, у меня большой монитор 1680 пикселей в ширину, на меньших должен тупить меньше, т.к. браузер перерисовывает только видимую область, но еще нужно учитывать пользователей с слабыми процессорами.

Вот код, посоветуйте, что можно оптимизировать для увеличения скорости выполнения? Сам я уже выжал из него все что мог.
this.bind('mousemove', $(this), function (event) {
		  var obj       = $(this);
		  var relative  = {x: event.pageX,
		  				   y: event.pageY};
		  change 	= 	  {x: 0,
		  				   y: 0};  
		   
		  for (var z in relative){ //  расчет на сколько сдвигаются координаты, 
			 if (relative[z] < settings.area)
				change[z] =  Math.round( (relative[z] - settings.area)*settings.velocity);
			 else if (relative[z] > (size[z]-settings.area))
				change[z] = Math.round( (settings.area+relative[z]-size[z])*settings.velocity );
		  }

		 clearTimeout(timeoutID);
		 timeoutID = setTimeout( function(){   // timeout чтобы скрипт не реагировал на мелкие дерганья мышкой
			   	 if( !change.x && !change.y ) return false;
				 clearInterval(intervalID);
				 intervalID = setInterval(Move, 20, [$(this)]);
		  }, 10);	
	   });

	   function Move(obj) { 
		  position.x -= change.x; // новые координаты
		  position.y -= change.y;

		  if( position.x > 0 ){           // не дает выйти за границы экрана
			position.x = 0;
		  }
		  else if( position.x < maxx ){  // не дает выйти за границы экрана
			position.x = maxx;
		  }
		  
		  o.css("left", position.x+'px');

		  if( position.y > 0 ){			//  не дает выйти за границы экрана
			position.y = 0;
		  }
		  else if( position.y < maxy ){ // не дает выйти за границы экрана
			 position.y = maxy;		
		  }
		
		  o.css("top", position.y+'px');		 
  
	   };
	   
	   function stopAnimation(){
	      clearTimeout(timeoutID);												  
	      clearInterval(intervalID);		
	   }
	 
	   this.bind('mouseleave', $(this), function (event) {
		  clearInterval(intervalID);
	   });

Последний раз редактировалось _axl, 05.04.2011 в 06:52.
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2011, 07:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

_axl,
Размышления на эту же тему )))
Ответить с цитированием
  #3 (permalink)  
Старый 06.04.2011, 22:46
Аспирант
Отправить личное сообщение для _axl Посмотреть профиль Найти все сообщения от _axl
 
Регистрация: 21.07.2009
Сообщений: 39

Если это к тому, что надо было реализовывать через background-position, то не получится, т.к. на карте присутствуют элементы привязанные к определенным ее областям
Ответить с цитированием
  #4 (permalink)  
Старый 06.04.2011, 23:04
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

_axl,
для начала написать на чистом скрипте без использования библиотек
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите оптимизировать скрипт redqueen Общие вопросы Javascript 0 24.02.2011 22:14
Помогите код оптимизировать. Suharik Events/DOM/Window 2 27.05.2010 11:59
Помогите оптимизировать скрипт смены изображений с анимацией Khmelevsky Элементы интерфейса 5 06.03.2010 19:02
Помогите оптимизировать код. pizzZ jQuery 5 17.11.2009 23:52
Перенаправление с ВКонтакте на фейк (помогите пожайлуста) SOADucT Я не знаю javascript 21 09.06.2009 04:40