Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2011, 23:15
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

анимация фона
есть код, я доволен, все работает даже в ие, но мне всёравно кажется, что код кривой, код заставляет ехать фон влево, у меня есть его реализация с jQwery и mootools, но она тормозит и много весит, это намного проще, но хотел бы узнать, что тут лишнего, и что лучше добавить:
<div onclick="animate('ex1', function(p) {return p;})" id="ex1">
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
</div>

function animate(id, delta, dur) {
	element = document.getElementById(id);
	from = 0;
	to = 1;
	duration = dur || 100;
	start = new Date().getTime();

	setTimeout(function() {
	    var now = (new Date().getTime()) - start;
	    var progress = now / duration;
	        var result = (to - from)*delta(progress)+from;

	    element.style.backgroundPosition = "-"+result+"mm 0mm";
	    //element.innerHTML = result;

	    if (true)
	        setTimeout(arguments.callee, 1);
	}, 10);
}
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2011, 01:06
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

function animate(id, delta) {
	element = document.getElementById(id);
	from = 0;
	to = 1;
	duration = 100;
	start = new Date().getTime();

	setTimeout(function() {
	    var now = (new Date().getTime()) - start;
	    var progress = now / duration;
	        var result = (to - from)*delta(progress)+from;

	    element.style.backgroundPosition = "-"+result+"mm 0mm";
	    //element.innerHTML = result;
	        setTimeout(arguments.callee, 1);
	}, 10);
}

убрал лишнее
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2011, 01:20
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Не то, что бы лишнее, просто не понимаю, зачем так сложно:
(new Date().getTime()) - start;
??? Я бы написал так:
new Date - start;
А вот что element, from, to и т.д. - глобальные переменные, - плохо! Будет конфликт, если запустить несколько функций.
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2011, 01:25
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

Sweet,
function animate(id) {
	element = document.getElementById(id);
	from = 0;
	to = -1;
	duration = 100;
	start = new Date().getTime();
	setTimeout(function() {
	    now = new Date() - start;
	    progress = now / duration;
	        result = (to - from)*progress+from;

	    element.style.backgroundPosition = result+"mm 0mm";
	    //element.innerHTML = result;
	        setTimeout(arguments.callee, 1);
	}, 10);
}

пока это получилось, я думаю переменные убрать, прописать в формеле все, что можно
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2011, 01:27
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

Sweet,
function animate(id) {
	element = document.getElementById(id);
	duration = 100;
	start = new Date().getTime();
	setTimeout(function() {
	    now = new Date() - start;
	    progress = now / duration;
	        result = -1*progress;

	    element.style.backgroundPosition = result+"mm 0mm";
	    //element.innerHTML = result;
	        setTimeout(arguments.callee, 1);
	}, 10);
}

получилось так
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2011, 01:30
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

function animate(id) {
	element = document.getElementById(id);
	duration = 100;
	start = new Date()
	setTimeout(function() {
	    now = new Date() - start;
	    progress = now / duration;
	        result = -1*progress;

	    element.style.backgroundPosition = result+"mm 0mm";
	    //element.innerHTML = result;
	        setTimeout(arguments.callee, 1);
	}, 10);
}
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2011, 01:34
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

function animate(id) {
	element=document.getElementById(id);
	start=new Date()
	setTimeout(function() {
		now=new Date() - start;
		progress=now / 100;
		result=-1*progress;
		element.style.backgroundPosition=result+"mm 0mm";
		setTimeout(arguments.callee,1);
	},10);
}
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2011, 01:45
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

qwertyuiop,
качественно флудишь! Ты не видишь кнопочку "Ред." в правом нижнем углу сообщений? Рекомендую пользоваться ей.
И используй var!
Ответить с цитированием
  #9 (permalink)  
Старый 03.08.2011, 02:32
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

Sweet,
ок, ток зачем вар? может глупый вопрос, но всё же, я никогда не использую
Ответить с цитированием
  #10 (permalink)  
Старый 03.08.2011, 02:35
Аспирант
Отправить личное сообщение для qwertyuiop Посмотреть профиль Найти все сообщения от qwertyuiop
 
Регистрация: 02.06.2011
Сообщений: 71

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм плавной смены фона или изображения vandy3 Общие вопросы Javascript 6 11.11.2010 00:56
случайная смена фона сайта на jquery Netherlandman jQuery 8 25.08.2010 03:11
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Помощь в реализации и оптимизации (слои, картинки, анимация) kain Общие вопросы Javascript 1 29.03.2010 18:22
Цикличность анимация? SashaBorandi jQuery 1 25.12.2008 09:20