Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.05.2011, 11:57
Человек
Отправить личное сообщение для 0931454574 Посмотреть профиль Найти все сообщения от 0931454574
 
Регистрация: 10.03.2011
Сообщений: 305

Определение смещения в момент анимации.
Как определить значение любого из свойтв (top,left и т.д.)в момент протекания анимации. То есть движется обьект и при каждом его смещении на 1 пиксель выполняется проверка условия.

Условие: анимация не должна строиться на цикле, из-за рывков анимации.

П.С. как сами значения свойств определяются писать нет нужды.
__________________
XYZ
Ответить с цитированием
  #2 (permalink)  
Старый 12.05.2011, 12:15
Человек
Отправить личное сообщение для 0931454574 Посмотреть профиль Найти все сообщения от 0931454574
 
Регистрация: 10.03.2011
Сообщений: 305

Нашел решение но появилась другая ситуация

<script>
$(document).ready(function()
 {
	
	 animate();

 });


// определение позиции картинки 
 function position_of_img()
 {
	 var $position_images=$("#block2").css("left");
	 return $position_images;
 }
 // анимация для изображения.
 function animate()
 {

	  $div_too_test = $("#block2");
	  $div_too_test.animate(
	  {
		  "left": "+=1000px",
		   
	  }, "10000", function ()
	  
	  {
		  alert(position_of_img());
	  });
	  setInterval(function()
	   {
		   
		 var $position_images2=$("#block2").css("left");
		 if ($position_images2 >= "250")
		  {
			  
			  $("#block2").css("background-color","green");
		  }
	   }, 200);
	  
 }
 
</script>

<div id="block2"></div>


И какую бы скорость в анимации не задавал, она остается одна и та же.
__________________
XYZ
Ответить с цитированием
  #3 (permalink)  
Старый 12.05.2011, 12:22
Человек
Отправить личное сообщение для 0931454574 Посмотреть профиль Найти все сообщения от 0931454574
 
Регистрация: 10.03.2011
Сообщений: 305

короче говоря

if ($position_images2 >= "250")


неправильно работает.
То есть с анимацией всё ок,а вот проверка значения хромает.
Наверное полученное значение в строке. Или?
__________________
XYZ
Ответить с цитированием
  #4 (permalink)  
Старый 12.05.2011, 12:29
Человек
Отправить личное сообщение для 0931454574 Посмотреть профиль Найти все сообщения от 0931454574
 
Регистрация: 10.03.2011
Сообщений: 305

Ёма, надо же пиксели отбрасывать, черт побери!



Вопрос в следующем. КАК СРАВНИТЬ ЗНАЧЕНИЕ СТИЛЕ (ТОР) с числовым значением?
пробовал replace? parseInt
__________________
XYZ

Последний раз редактировалось 0931454574, 12.05.2011 в 12:35.
Ответить с цитированием
  #5 (permalink)  
Старый 12.05.2011, 16:12
Человек
Отправить личное сообщение для 0931454574 Посмотреть профиль Найти все сообщения от 0931454574
 
Регистрация: 10.03.2011
Сообщений: 305

Разобрался.
Оказывается parseInt работал. но из за чего то некоректно работал в условие сравнения. Теперь работает. Привожу пример перевода значения положения элемента

setInterval(function()
	   {
		  // берем значение положения в формате "XX.px" 
		 var $position_images2=$("#block2").css("left");
		// убираем "px"
		 $position_images2=$position_images2.replace("px","");
                  // превращаем в число
		 $str2 = parseInt($position_images2);
                 // сравниваем, число можно и в кавычках
		 if ($str2 >= 900) 
		  {
			  // меняем стиль	 
			  $("#block2").css("background-color","green");
			   
		  }
		  else
		  {
			   
		  }
	   }, 10);


Теперь нужно отключить данный setInterval.
__________________
XYZ
Ответить с цитированием
  #6 (permalink)  
Старый 12.05.2011, 22:08
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

А зачем replace'ом убирать "px", ведь parseInt и так это сделает за тебя:
var position = '132px';
alert(parseInt(position));


Что бы останавливать setInterval, воспользуйтесь функцией clearInterval
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #7 (permalink)  
Старый 13.05.2011, 09:55
Человек
Отправить личное сообщение для 0931454574 Посмотреть профиль Найти все сообщения от 0931454574
 
Регистрация: 10.03.2011
Сообщений: 305

walik,
Уже нашел, спасисбо.
Но вот беда, при любом интервале пару пикселей проходят.
Например анимация идет 3000 ,а интервал проверки позиции элемента 1
и в итоге 2 пикселя проскальзывают.
__________________
XYZ
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порядок выполнения анимации Tohin jQuery 3 03.07.2009 11:52
Определение смещения страницы Phoenix Общие вопросы Javascript 0 30.10.2007 20:48