Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #91 (permalink)  
Старый 26.12.2010, 12:09
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

x-yuri,
можеш не приводить мне примеры на дждиквери-я его заведомо отказался изучать. понять могу что написано что на нём но на это нужно время. всё что на нём легко сделать-всё тоже можно на скрипте.ну да кода больше-ну дак он используется повторно и позволяет делать то чего не может джиквери
Ответить с цитированием
  #92 (permalink)  
Старый 26.12.2010, 12:50
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от x-yuri
(function () {
var callee = arguments.callee;
$("#id").animate({
top: "+=180px"
}, 3000, function () {
$(this).animate({
top: "-=180px"
}, 3000, callee);
});
})();
по поводу этого сказать ничего не могу-во первых с джиквери не хочу голову морочить и Вторых-значение таймера здесь не присутствует вызывающего функцию. так что всё может быть-только ведь даж если не будет ошибки с таймером-ронять он будет только с верхней точки(если событе он клик вклинится между анимейтами-вклинится или нет -не знаю-но наверное наврядли)-так что вероятнее всего никогда не уронит- поскольку событие роняния может выполнится когда контейнер будет и так в нижней точке.знаю могу налететь на возражение -что может упасть ещё ниже-но этот вариант не рассматриваю поскольку он противоречит условиям задачи. и его выполнение будет означать неправильное решение задачи-не соответствие условиям

Последний раз редактировалось dmitriymar, 26.12.2010 в 12:52.
Ответить с цитированием
  #93 (permalink)  
Старый 26.12.2010, 13:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ну так у exec такая большая карма, потому что всем влом его код читать а если серьезно, то где там проблема? Его скрипт упрощенно работает так:
setTimeout(function(){
    <сдвигаем квадрат>
    setTimeout(arguments.callee, 13);
}, 13)

по такой же схеме работает анимация в jQuery. А чтобы не осталось никаких сомнений я добавил возможность остановить квадрат:
<div id='foo' style='width: 50px; height: 50px; position: absolute; background: #555555'>
</div>

<script type='text/javascript'>
window.onload = function () {
function delta(progress) {
     function d(progress) {
        for(var a = 0, b = 1, result; 1; a += b, b /= 2) {
           if (progress >= (7 - 4 * a) / 11)
               return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2);
        }
     }
     return 1 - d(1 - progress);
}

	document.getElementById("foo").onclick = function () {
		var E = this;
		var timerId;
		this.onclick = function(){
			clearTimeout( timerId );   // !!! останавливаем квадрат
		};
		var go = function( toTop, from, to ){
			var start = new Date().getTime(),
			callee = arguments.callee;
			timerId = setTimeout(function () {
				var progress = (new Date().getTime() - start) / 1000;
				E.style.top = ((to - from) * (toTop ? progress : delta(progress)) + from) + "px";
				if (progress < 1)
					timerId = setTimeout(arguments.callee, 13);
				else
					callee(!toTop, toTop ? 0 : 180, toTop ? 180 : 0);
			}, 13);
		};
		go(false, 0, 180);
	};
};
</script>
Ответить с цитированием
  #94 (permalink)  
Старый 26.12.2010, 13:37
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от dmitriymar
.animate({
top: "+=180px"
}, 3000,
ты об этом?
Ответить с цитированием
  #95 (permalink)  
Старый 26.12.2010, 13:39
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

запарился-ща гляну -вполне может быть что он код изменил ещё тогда и я не глянув его перепечатал
Ответить с цитированием
  #96 (permalink)  
Старый 26.12.2010, 13:39
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

нет, ты же сказал не упоминать jQuery. И ты похоже игнорируешь ссылки "Посмотреть исходный код"... приведу его нескрытым

<div id='foo' style='width: 50px; height: 50px; position: absolute; background: #555555'>
</div>

<script type='text/javascript'>
window.onload = function () {
function delta(progress) {
     function d(progress) {
        for(var a = 0, b = 1, result; 1; a += b, b /= 2) {
           if (progress >= (7 - 4 * a) / 11)
               return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2);
        }
     }
     return 1 - d(1 - progress);
}

	document.getElementById("foo").onclick = function () {
		var E = this;
		var timerId;
		this.onclick = function(){
			clearTimeout( timerId );   // !!! останавливаем квадрат
		};
		var go = function( toTop, from, to ){
			var start = new Date().getTime(),
			callee = arguments.callee;
			timerId = setTimeout(function () {
				var progress = (new Date().getTime() - start) / 1000;
				E.style.top = ((to - from) * (toTop ? progress : delta(progress)) + from) + "px";
				if (progress < 1)
					timerId = setTimeout(arguments.callee, 13);
				else
					callee(!toTop, toTop ? 0 : 180, toTop ? 180 : 0);
			}, 13);
		};
		go(false, 0, 180);
	};
};
</script>
Ответить с цитированием
  #97 (permalink)  
Старый 26.12.2010, 13:42
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от dmitriymar
запарился-ща гляну -вполне может быть что он код изменил ещё тогда и я не глянув его перепечатал
теоретически возможно, если бы не одно "но": в этой теме все знают, что анимация делается с помощью setTimeout. Я это гарантирую!!!111
Ответить с цитированием
  #98 (permalink)  
Старый 26.12.2010, 13:43
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

опять приходим к к тому что такое анимация.простите если я изменение координат контейнера в пространстве организую в цикле(допустим от х=10 до х=50). а реализацию того чтобы это движение было видно полностью а не только начало и конец-реализую введением в тело цикла-прокруткой пустого цикла.это будет не анимация?
Ответить с цитированием
  #100 (permalink)  
Старый 26.12.2010, 13:50
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от x-yuri
теоретически возможно, если бы не одно "но": в этой теме все знают, что анимация делается с помощью setTimeout. Я это гарантирую!!!111
знать то знают -но как реализуют? допуская косяки в построении алгоритма?))) ну я знаю что в ракете есть двигатель-но знание того это недостаточно будет мне(я так думаю) чтобы построить правильно рабочую ракету. -это я абстрактно ответил на то что все знают-но творят глупости
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с анимацией IE 8 MichaelMV jQuery 0 03.11.2010 18:21
Помогите оптимизировать скрипт смены изображений с анимацией Khmelevsky Элементы интерфейса 5 06.03.2010 19:02
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47
проблемы с Post Phoenix (X)HTML/CSS 11 31.10.2008 04:25