Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2014, 00:52
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

выполнение функции перед анимацией
Доброго времени суток, кто читает эту тему. Столкнулся с такой проблемой: нужно выполнить функцию перед самой анимацией.
Пробую так:
$('#car'+z).animate({'margin-left': 12, 'margin-top':  12 },time, function() {
					var dx = x1-x;
								alert('123');
														
							});

Но функция выполняется полсе анимации и не пойму еще почему не выводит "123".
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2014, 00:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

natureproj,
так и ставьте вашу функцию перед анимацей
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2014, 01:14
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

Дело в том что у меня цикл. Суть кода такая: катается машинка и на поворотах меняется направление и соответственно сама картинка.
Весь код такой, на примере х кординаты:
var steptop =72;
	var stepleft =100;
	var top0=293;
	var left0=20;
	function car(z)
	{
		var x = Math.floor(Math.random()*10);
		 x= x - Math.floor(x/4)*4;
		var y = Math.floor(Math.random()*10);
		y= y - Math.floor(y/4)*4;
		$('#car'+z).css('margin-top', top0 - x*steptop + y*steptop);
		$('#car'+z).css('margin-left',left0 + x*stepleft + y*stepleft);

		var i =0;
		while(i<10)
		{
			var x1 = Math.floor(Math.random()*10);
				var time = 1000*Math.abs(x1-x);

					$('#car'+z).animate({'margin-left': left0+  x1*stepleft + y*stepleft, 'margin-top':  top0 - x1*steptop + y*steptop },time, function() 
							{
								var dx = x1-x;
								if(dx<=0)
								{
									$('#car'+z).attr("src","/images/carlb.png");
								}
								else
								{
									$('#car'+z).attr("src","/images/carrt.png");
								}							
							});
			x=x1;

					i++;
		}
	}

Если просто поставить функию перед анимацией - она вызовется в цикле сразу 10 раз и все.

Последний раз редактировалось natureproj, 27.05.2014 в 01:18.
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2014, 01:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от natureproj
Дело в том что у меня цикл.
у вас 10 машин сразу катается ? если 1 зачем цикл?
Ответить с цитированием
  #5 (permalink)  
Старый 27.05.2014, 08:43
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

этот цикл на повороты одной машинки. Дальше функци car() вызывается 10 раз и тогда катается 10 машинок
Ответить с цитированием
  #6 (permalink)  
Старый 27.05.2014, 11:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

natureproj,
вот тут тоже машинка катается и поворачивает
http://javascript.ru/forum/events/40653-ispolzovanie-%24-deferred-so-storonnimi-plaginami-jquery.html#post267760

а здесь так даже человечек дорогу перебегает перед машинами http://learn.javascript.ru/play/l9hKp
может на какие мысли натолкнут
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержать выполнение функции cevut Общие вопросы Javascript 2 08.03.2014 20:11
Остановить выполнение функции внутри другой функции ami_moor Общие вопросы Javascript 4 17.09.2013 14:02
onclick прервать выполнение функции wgt Events/DOM/Window 4 30.04.2013 20:52
При выполнение строки кода вылетаю из функции. developer_ Events/DOM/Window 3 28.07.2011 00:45
Прерывается выполнение функции при смене аргумента mikser763 Общие вопросы Javascript 1 11.10.2010 16:36