11.12.2010, 01:02
|
Новичок на форуме
|
|
Регистрация: 08.12.2010
Сообщений: 9
|
|
Книжку держала. http://javascript.ru/tutorial/object/intro...Вот, сами убедитесь. если в чем не права- поправьте (обоснование- наилучшее подтверждение вашей компетентности).Я и не думала давать мастер класс, вы обознались. А пример мой работает, я убедилась(Ваш, кстати, нет). А почему бы и не сделать на JQuery, не вижу причин этого не делать.
|
|
11.12.2010, 05:12
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
vyazovetskova,
работает его пример-и алгоритм там более грамотно составлен,ну и на мастер класс очень похоже.
|
|
11.12.2010, 09:54
|
Новичок на форуме
|
|
Регистрация: 08.12.2010
Сообщений: 9
|
|
Работает, но не так как надо(на клик не реагирует). Не думаю, что описание своего опыта стоит называть мастер классом.
|
|
11.12.2010, 10:08
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
vyazovetskova,
чей его или ваш на клик не реагирует. его реагирует. если ваш не работает то проблема у вас таже что и говорил я вам. он грамотно организовал свой алгоритм(хотя по мне там не хватает пары строк но это не суть важно). весь смысл алгоритма сводиться вот к этому и я не один раз вам это говорил и мне казалось что вы поняли это.
сдвижка на одну точку-опрос переферии-сдвижка- опрос-сдвижка- опрос. и все алгорритмы выложенные здесь кроме этого не могли работать. причина одна что авторы их не способны думать-вызубрили школьный курс и блещут им. этим и отличаются разработчики от людей просто знающих язык.
у вас же непрерывная сдвижка без опроса. по поводу параллельности процессов-ну смотрите -поставьте несколько плееров на страницу и они могут играть параллельно-если вы им это не запретите.ну а прерывания на опрос переферии (назову всётаки как это в ассемблере) ни в одном языке ещё не отменяли. и если какаято оболочка сама их вставляет за вас-это плюс оболочки
Последний раз редактировалось dmitriymar, 11.12.2010 в 10:21.
|
|
11.12.2010, 10:27
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от vyazovetskova
|
Передо мной встала задача сделать анимацию на js. Но не просто анимацию, а еще и такую, чтобы она реагировала на события. (Анимация не может реагировать на события, т.е. с точки зрения пользователя - может, но мы ведь программисты) Конкретно это было так: есть объект (у меня была улитка), который постоянно поднимается вверх до определенного уровня, потом падает вниз и опять поднимается и т.д...При клике на объект он должен упасть. Задачка с подвохом. Дело в том, что в js нет паралельности. (Потому что ее в программировании быть не может, параллельность есть в математике) Казалось бы, такую задачу можно решить использовав объекты. (Такое впечатление, что объекты могут помочь решить проблему "отсутствия параллельности") Но в js объектов как таковых нет. (В js есть объекты) Объектами называются обычные хэши. (В js нету хэшей, просто бывает можно рассматривать некоторые объекты как хэши) На ум пришло одно: немного подвинуть объект, проверить был ли клик или не достиг ли он пиковой вершины. Если был клик или вершина достигнута,то уронить объект. Если ни того, ни другого не произошло- подвинуть еще выше. (Более понятный вариант: "Выполнять анимацию в n шагов, проверяя, был ли клик в конце каждого шага") Код, который я приведу ниже, в принципе так и делает, но более изящно с помощью setTimeout. (Значит раньше у нас была проблема параллельности, а теперь мы уже считаем, что это совсем даже не проблема и эта перпендикулярность приводит нас к изящному решению) Зададим (математическая терминология детектед) 2 функции : начать движение(возвращает элемент на стартовую позицию, обуляет высоту) и двигаться вверх. Собственно. код:
function begin(x){ //x- высота, на которой сейчас находится улитка (высота, на которую нужно скинуть улитку)
H=0;
$('#snail').animate({top:'+='+x},1000); //возвращает улитку в начальное положение
goes_up(); // мы скинули улитку и начали движение вверх
}
function goes_up(){
H++;
$('#snail').animate({top:'-='+speed},1000);
if (H<(maxH/speed)){
timer = setTimeout("goes_up()",1000);
}
else {begin(maxH)}
}
H=0;//высота улитки
maxH=180; //максимальная высота, на которую может забраться улитка (какой же это maxH? это max(H*speed))
speed=3; //сколько улитка проползет на секунду
begin(0);
$('#snail').click(function(){
clearTimeout(timer); //сбрасывает setTimeOut
begin(H*speed); //сначала уронит улитку, а потом опять начнет движение
});
подробнее о setTimeOut и clearTimeOut можно прочесть тут :www.w3schools.com/js/js_timing.asp
|
к тому же код какой-то запутанно-замороченный
<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
</head>
<body>
<div id="snail" style="
position: absolute;
top: 100px;
width: 20px;
height: 20px;
background: red;
"></div>
<script type="text/javascript">
function go(){
$('#snail').animate({top: '-=100'}, {duration: 3000});
$('#snail').animate({top: '+=100'}, {duration: 500, complete: go});
}
$('#snail').click(function(){
$('#snail').stop(true);
$('#snail').animate({top: '100'}, {duration: 500, complete: go});
});
go();
</script>
</body>
</html>
Последний раз редактировалось x-yuri, 11.12.2010 в 11:10.
|
|
11.12.2010, 10:28
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
vyazovetskova,
возможно и ваш алгоритм изначальный бы работал-если бы по он клик вы не пытались бы вызвать другую функцию не прервав работающую а передавали бы управление другому блоку работающей функции-но повторюсь что это "возможно" а проверять это нет ни времени ни желания
|
|
11.12.2010, 23:20
|
Новичок на форуме
|
|
Регистрация: 08.12.2010
Сообщений: 9
|
|
Мой алгоритм работает, я его проверяла.
А по факту сыр-бор уже не из-за чего. Задача решена.
x-yuri,
ведите свой блог, если вас мои формулировки не устраивают. Это уже снобизм, придираться к языку. Смущает математическая терминология? да, это бесусловно имеет огромный смысл в решении этой задачки)) вы так отлично правите мой текст, лучше бы сами писали- тогда у таких как я новичков и вопросов не возникало. Критиковать всегда лучше.
|
|
12.12.2010, 10:13
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
vyazovetskova, если ты не в состоянии воспринимать критику, зачем говорить "если в чем не права- поправьте"? Снобизм? Ровно наоборот Придираюсь к языку? Ну да, а как ты хотела? Чтобы тебя поняли, надо называть вещи своими именами. Я же к орфографии не придирался? Хотя с ней у тебя вроде нормально. Проблема в том, что там были ошибки по-серьезнее терминологии. А хвалить, да, я не умею. И не только окружающих Так что советую тебе перечитать мое сообщение и вынести оттуда для себя что-нибудь ползеное, а не становится в позу и верить в то, что ты там себе напридумывала
|
|
12.12.2010, 14:21
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от vyazovetskova
|
лучше бы сами писали- тогда у таких как я новичков и вопросов не возникало.
|
Такие, как вы, новички читать почему-то не любят. Для вас уже столько текстов написано, что за день не прочитаешь, а вы всё свои пишете, утверждая, а что ж вы сами-то не написали. Да написали, но вы не читаете.
|
|
18.12.2010, 15:46
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
а снобизм, вот он:
Сообщение от dmitriymar
|
согласен с одним высказавшимся по поводу людей знающих ассемблер и скрипт и их положении в иерархии.блин да вы здесь читать все умеете? а думать ? или все заученными шаблонами языка думаете? ну ничего удивительно что таким как я платят в разы больше суммы зарплат каких как ваших за руководство такими как вы.
|
---
в общем, в результате долгой и нудной переписки, dmitriymar так и не смог объяснить, в чем наша ошибка. Насколько я понял, он утверждает, что события, возникшие во время обработки других событий "пропадают". Но он не смог объяснить, почему. Периодически можно было услышать "идёт эта информация из знания ассемблера с 93 года" или "мне всё равно-поскольку знаю что работает именно так как я говорю"
вот код который опровергает его утверждение
<!DOCTYPE HTML>
<html>
<body>
<div id="div" style="
width: 100px;
height: 100px;
background: red;
"></div>
<script type="text/javascript">
function $(id){ return document.getElementById(id); }
$('div').onclick = function(){
$('div').onclick = function(){
$('div').innerHTML += '.';
}
for( var i=0; i<1500000000; i++ ); // !!! количество итераций зависит от CPU
$('div').innerHTML += 'o';
}
</script>
</body>
</html>
(изначально я рассчитывал, что достатчно, чтобы один клик не пропал. Поэтому код мог бы быть удобнее)
но dmitriymar этого не достаточно. Недостаточно, что один клик не пропал. Не достаточно, что 30 кликов не пропало. Может у вас пропадет?
и считает, что тестировать надо так:
Сообщение от dmitriymar
|
чтобы не спорить в пустую. запусти какойнибудь цикл по таймеру длительный. сделай обработчик события он клик-чтобы считал колво нажатых раз. запусти несколько раз это дело по таймеру. ну и выведи по окончаню количество нажатий.
|
Сообщение от dmitriymar
|
в смысле обработчик события онклик к какому либо элементу на странице
|
p.s. надеюсь, что как только там у них перетурбации закончаться, dmitriymar, вынырнув из бюджета, раскажет нам все подробно и в картинках
|
|
|
|