26.12.2010, 10:18
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Kolyaj
|
Клик прекрасно сработает во время анимации.
|
Согласен, потому как есть пример (таймер тоже один):
<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>
Сообщение от Kolyaj
|
При данном коде подъём и падение будут происходить одновременно.
|
это же jQuery, там все не так.
Последний раз редактировалось monolithed, 26.12.2010 в 10:25.
|
|
26.12.2010, 10:23
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от monolithed
|
это же jQuery, там все не так.
|
дело не в "все не так". Это только Kolyaj заметил и вряд ли у нее был такой код - похоже не опечатку
|
|
26.12.2010, 10:52
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от x-yuri
|
p.s. скажи честно, ты умеешь признавать свои ошибки?
|
ошибки я могу признавать-только где здесь мои ошибки. пересмотри первые страницы-ошибки всех подряд-причём у людей с бешеной кармой.
да вот в том то и момент что если браузер не выдаёт предложение закрыть-то событие он игнорирует. пример этого -предпоследний "рабочий "-фф через раз его критически закрывает. и вопрос как работает дураказащита в браузерах в подобных ситуациях-в пресечениях,незнаю наверное введу новый термин-но в коде изначальном появляются ещё отложенные пресечения-так вот вопрос обрабатываются все они или часть просто отбрасывается? не думаю что ктото сможет дать однозначный ответ. и не важно таймеры или события ещё работают а таймер опять запустился вызывающий их и в этот момент момент ещё добавляются события. взять допустим два таймера сработавшие одновременно и тянущие элемент в разные стороны(на большое расстояние). в какой последовательности они сработают? сработают ли вообщее? как они сработают? будет ли критическая ошибка? в каких браузерах будет одно действие в каких другое?
что имеет больший приоритет-выполняемое действие? действие по таймеру,возникающие событие? какой приоритет у них будет при постановке в очередь? какие возможно станут?-никто об этом не знает.
и если бы не было этого кода изначально ошибочного во всех своих строках(помимо ошибок алгоритма-он не соответствует её заданию ну никак-это я о моментальном падении при клике)-эта тема здесь бы никогда не возникла. могу поспорить что подобная ситуация не рассматривается не в одной книге и не в одном учебном заведении.
рассмотрение этого на уровне рассмотрения пишущих браузеры-ситуация продумывания дуракозащиты
|
|
26.12.2010, 10:54
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от x-yuri
|
Это только Kolyaj заметил и вряд ли у нее был такой код - похоже не опечатку
|
именно такой код у неё и был. ну даже если представить что вместо 40000 у неё 4000. всё равно таймер "должен" запуститься 5 раз пока сработают 2 анимейта
исправил) -забыл слово должен
Последний раз редактировалось dmitriymar, 26.12.2010 в 11:06.
|
|
26.12.2010, 10:59
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
dmitriymar
Мне кажется, что если задать эти вопросы Дмитрию Сошникову, то он с удовольствием на них ответит.
|
|
26.12.2010, 11:02
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от monolithed
|
Согласен, потому как есть пример (таймер тоже один):
|
да он работает и срабатывает-но ты ведь каждые 15 милисекунд сдвигаешь контейнер на 1 точку. код у тебя выполняется быстрее 15 милисекунд. и появляется окно когда не выполняется никакой скрипт -окно для обработки он клик. клик на мыши(изо физиологии длится ведь дольше 15 милесекунд)-нет у нас таких скоростей движения пальцами.
за твой код я ничего не говорю-в твоём коде (условно провожу аналогии) реализованы "прерывания" на опрос и обработку событий-тем что(опять скажу цикл) движения работает меньший промежуток времени чем промежуток времени через какой таймер его опять вызовет. но ведь он ничего общего не имеет с той ситуацией что рассматривается)
Последний раз редактировалось dmitriymar, 26.12.2010 в 11:07.
|
|
26.12.2010, 11:26
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от monolithed
|
это же jQuery, там все не так.
|
да чего там не так? то что обаратывачивает скрипт в свои операторы-так от этого он не быстрее выполняется а медленнее. условно его можно сравнить с языком высокого уровня а скрип с языком низкого. уровня.всёравно что сравнивать бейсик с ассемблером-ассемблер сложнее быстрее но в конечном итоге даёт больше возможностей и позволяет сделать то что бейсик никогда не сможет.хотя на первый взгляд так бедно выглядит по сравнению с бейсиком....
|
|
26.12.2010, 11:53
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от dmitriymar
|
ошибки я могу признавать-только где здесь мои ошибки. пересмотри первые страницы-ошибки всех подряд-причём у людей с бешеной кармой.
|
хорошо, давай попробуем...
Сообщение от vyazovetskova
|
function goes_up(){
$('#idl').animate({top:'-=180'},40000);//подъем
$('#id').animate({top:'+=180'},1000);//падение
};
setInterval(goes_up, 100);//бесконечный подъем и падение
|
Сообщение от exec
|
(function () {
var callee = arguments.callee;
$("#id").animate({
top: "+=180px"
}, 3000, function () {
$(this).animate({
top: "-=180px"
}, 3000, callee);
});
})();
|
Сообщение от dmitriymar
|
ну и не упадёт никогда по клику. пока цикл не закончится опросов и других любых действий не будет
|
ты чей цикл имел в виду?
|
|
26.12.2010, 11:59
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
function goes_up(){
$('#idl').animate({top:'-=180'},40000);//подъем
$('#id').animate({top:'+=180'},1000);//падение
};
setInterval(goes_up, 100);
|
|
26.12.2010, 12:02
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от exec
|
exec exec на форуме
Профессор
Карма: +843
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
Регистрация: 21.01.2010
Сообщений: 966
Цитата выделенного
dmitriymar, на
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
01 <div id='foo' style='width: 50px; height: 50px; position: absolute; background: #555555'>
02 </div>
03
04 <script type='text/javascript'>
05 window.onload = function () {
06 function delta(progress) {
07 function d(progress) {
08 for(var a = 0, b = 1, result; 1; a += b, b /= 2) {
09 if (progress >= (7 - 4 * a) / 11)
10 return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2);
11 }
12 }
13 return 1 - d(1 - progress);
14 }
15
16 document.getElementById("foo").onclick = function () {
17 var E = this;
18 this.onclick = new Function;
19 (function (toTop, from, to) {
20 var start = new Date().getTime(),
21 callee = arguments.callee;
22 setTimeout(function () {
23 var progress = (new Date().getTime() - start) / 1000;
24 E.style.top = ((to - from) * (toTop ? progress : delta(progress)) + from) + "px";
25 if (progress < 1)
26 setTimeout(arguments.callee, 13);
27 else
28 callee(!toTop, toTop ? 0 : 180, toTop ? 180 : 0);
29 }, 13);
30 })(false, 0, 180);
31 };
32 };
33 </script>
Просто интересно узнать, что опять не так.
|
это по поводу второго кода что ты привёл -я его тогда вообще не рассматривал-я рассматривал код человека выложевшего вопрос.
но по поводу кода привёдённого им-вторым постом в этом топике-привожу код какой он положил со всеми доработками-и посмотри коменты к нему.так что думаю что и первый код какой он привёл-не соответветсвует задаваемому вопросу-точнее на нём не возможно сделаить реализацию того что она хотела
|
|
|
|