Цитата:
<script type="text/javascript">
window.onload = function(){
var elem = document.getElementsByTagName('div')[0], i = l = 120, j = k = 0;
elem.onclick = function(){
if(k!=0) {
i = -l;
return false;
}
(function(){
if(i>=k){
elem.style.top = --i +'px'; j = i; k = 1;
}
else {
elem.style.top = ++j +'px';
if(++j>=l) i = l;
}
window.setTimeout(arguments.callee, 15);
})();
return false;
};
};
</script>
<div style="background: #0095FF; position: absolute; width: 30px; height: 30px; top: 120px"></div>
Цитата:
|
Цитата:
|
Цитата:
да вот в том то и момент что если браузер не выдаёт предложение закрыть-то событие он игнорирует. пример этого -предпоследний "рабочий "-фф через раз его критически закрывает. и вопрос как работает дураказащита в браузерах в подобных ситуациях-в пресечениях,незнаю наверное введу новый термин-но в коде изначальном появляются ещё отложенные пресечения-так вот вопрос обрабатываются все они или часть просто отбрасывается? не думаю что ктото сможет дать однозначный ответ. и не важно таймеры или события ещё работают а таймер опять запустился вызывающий их и в этот момент момент ещё добавляются события. взять допустим два таймера сработавшие одновременно и тянущие элемент в разные стороны(на большое расстояние). в какой последовательности они сработают? сработают ли вообщее? как они сработают? будет ли критическая ошибка? в каких браузерах будет одно действие в каких другое? что имеет больший приоритет-выполняемое действие? действие по таймеру,возникающие событие? какой приоритет у них будет при постановке в очередь? какие возможно станут?-никто об этом не знает. и если бы не было этого кода изначально ошибочного во всех своих строках(помимо ошибок алгоритма-он не соответствует её заданию ну никак-это я о моментальном падении при клике)-эта тема здесь бы никогда не возникла. могу поспорить что подобная ситуация не рассматривается не в одной книге и не в одном учебном заведении. рассмотрение этого на уровне рассмотрения пишущих браузеры-ситуация продумывания дуракозащиты:yes: |
Цитата:
исправил) -забыл слово должен |
dmitriymar
Мне кажется, что если задать эти вопросы Дмитрию Сошникову, то он с удовольствием на них ответит. |
Цитата:
за твой код я ничего не говорю-в твоём коде (условно провожу аналогии) реализованы "прерывания" на опрос и обработку событий-тем что(опять скажу цикл) движения работает меньший промежуток времени чем промежуток времени через какой таймер его опять вызовет. но ведь он ничего общего не имеет с той ситуацией что рассматривается) |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
function goes_up(){
$('#idl').animate({top:'-=180'},40000);//подъем $('#id').animate({top:'+=180'},1000);//падение }; setInterval(goes_up, 100); |
Цитата:
но по поводу кода привёдённого им-вторым постом в этом топике-привожу код какой он положил со всеми доработками-и посмотри коменты к нему.так что думаю что и первый код какой он привёл-не соответветсвует задаваемому вопросу-точнее на нём не возможно сделаить реализацию того что она хотела |
x-yuri,
можеш не приводить мне примеры на дждиквери-я его заведомо отказался изучать. понять могу что написано что на нём но на это нужно время. всё что на нём легко сделать-всё тоже можно на скрипте.ну да кода больше-ну дак он используется повторно и позволяет делать то чего не может джиквери |
Цитата:
|
ну так у 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>
|
Цитата:
|
запарился-ща гляну -вполне может быть что он код изменил ещё тогда и я не глянув его перепечатал
|
нет, ты же сказал не упоминать 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>
|
Цитата:
|
кликни по контейнеру когда он будет двигаться в любую сторону-никакой реакции. кликни по нему два раза подряд-браузер рухнет.код я просматривал-посмотри там за ним коменты-но я в него не вчитывался-смысл если по работе примера видно что он не рабочий-говорю о браузере фф
|
опять приходим к к тому что такое анимация.простите если я изменение координат контейнера в пространстве организую в цикле(допустим от х=10 до х=50). а реализацию того чтобы это движение было видно полностью а не только начало и конец-реализую введением в тело цикла-прокруткой пустого цикла.это будет не анимация?
|
Цитата:
|
для начала, если ошибка в том, что он не реализовал возможность ронять квадрат по клику - тогда да, он это не реализовал. Я это добавил к его коду и оно у меня работает
но, я так понимаю, к его коду осталась единственная претензия - он приводит к тому, что firefox некорректно завершает работу. Только у меня и его код работает, и доделанный мной вариант и ничего не роняется. Те кто в теме, а у вас? Больше похоже, что это не связано со скриптом exec. У тебя есть идеи, что не так в его коде, из-за чего падает firefox? |
ну и смысл моего поста был-что то что она хочет в её случае никогда не сможет реализоваться при таком алгоритме.-ошибка с таймером-это приводит к отсутствию раеакции на он клик-причина первая
и то что пока анимейт весь не выполниться-не будет реакции на на он клик-то есть падения. ей же нужно падение с любой точки. и вместо того чтобы прочитать то что я написал-и глянуть на эти грубые ошибки в её алгоритме-все наперебой мне начали доказывать что они п..е мультипликаторы и браузероразработчики. удивляюсь что фраза не прозвучала что анимация это русалочки и т.д и без двд она никак:write: |
ты сам сказал что его код никто не в состоянии дочитать до конца.. не реализовал говоришь-почитай посты перед ним-от него. он считает что падение он реализовал. -если идти по логической цепочке пред сообщений-не читая его код
|
не знаю изза чего-и у меня и монолита тогда браузеры рухнули
|
dmitriymar, x-yuri я честно не понимаю уже о чем эта тема, что сделать чтобы вы прекратили эту полемику?
Цитата:
|
Цитата:
|
Цитата:
<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script src="my.js"></script>
</head>
<body>
<div id="id" style="
position: absolute;
top: 80px;
width: 50px;
height: 50px;
background: red;
"></div>
<script type="text/javascript">
function goes_up(){
$('#id').animate({top:'-=80'},40000);//подъем
$('#id').animate({top:'+=80'},1000);//падение
};
setInterval(goes_up, 100);//бесконечный подъем и падение
$('#id').click(function(){
$(this).stop(true).animate({top: '80'}, 0);
});
</script>
</body>
</html>
здесь есть один нюанс. Но это не верно: "это приводит к отсутствию раеакции на он клик", "пока анимейт весь не выполниться-не будет реакции на на он клик-то есть падения". Ну хоть здесь ты согласен, что не прав? Цитата:
Цитата:
|
Цитата:
способ-можно сломать тебе пальцы чтобы ты не мог печатать-вот всё и остановится.))) дак я и не говорю что не нормально -движение -опрос-движение-это я помоему с самого начала говорил |
Цитата:
|
Цитата:
<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script src="my.js"></script>
</head>
<body>
<div id="id" style="
position: absolute;
top: 80px;
width: 50px;
height: 50px;
background: red;
"></div>
<script type="text/javascript">
function goes_up(){
$('#id').animate({top:'-=80'},40000);//подъем
$('#id').animate({top:'+=80'},1000);//падение
};
setInterval(goes_up, 100);//бесконечный подъем и падение
$('#id').click(function(){
$(this).animate({top: '80'}, 0);
alert('click');
});
</script>
</body>
</html>
то что ты имел в виду именно это - что обработчик не запустится, подтверждают слова из твоего первого сообщения "пока цикл не закончится опросов и других любых действий не будет". Но ты не будешь признавать, что ты не прав. Так что да, смысла продолжать нету... |
Цитата:
|
а в какой очереди выстроиться?пока анимейт 40 раз в очередь станет при одном проходе вверх вниз.
x-yuri,ну вот ты написал алгоритм и мой первый пост в этой теме-ответь для себя-упадёт ли он когда нибудь при этом алгоритме по клику? и опять ты чуть перекрутил слова мои-когда я говорил что не обработается он клик-я тогда (найди историю переписки)имел в виду именно ту ситуацию что таймер запускается когда функция ещё не отработала. мои слова-отсутсвие реакции на он клик в этом случае-она будет заметна без алерт?не будет заметна-и участок кода реагирующий на он клик-никогда не выполниться-соответсвено реакции на он клик -не будет. и что имеет больший приоритет-таймер или клик?не будут ли копится клики в низу стека? и если будут копится внизу-может копятся(и очередь до них никогда не дойдёт) мож не попадают -проверять не особо хочется-тратить время на чушь подобную. главное знать что при подобном обработки не будет да и всё. ну и фиксация события(алерт и стоп-имеют больший приоритет чем функции простые-иначе было бы по клику заметно припадение-поскольку скорость падения выше чем подъёма) и его обработка это разные вещи |
| Часовой пояс GMT +3, время: 15:51. |