Заголовок сообщения: Баг с плавностью в Javascript (ч/з setInterval) Добавлено: 23 Сентябрь 2004, 14:42:17
Здесь (менее 10 килобайт) лежит страничка, которая работает не так как надо.
Проблема:Рисунки на ней сначала изменяют свои размеры плавно, а затем все быстрее и быстрее, и в конце концов вообще не видно самого процесса изменения размера - все происходит скачками.
Смысл вот в чем: при наведении мышки на рисунок, размер которого выставлен в коде HTML меньше чем реальный, он (рисунок) плавно увеличивается до реального размера. Т.е. если если у рисунка реальный размер 143х143 пикселя, то рисунок (onMouseOver) сначала увеличивается (плавно с размера 120х120 до 143х143, а при убирании мышки (onMouseOut) уменьшается обратно до 120х120. а в коде это выглядит так
Пока что организуется это так: onmouseover передает вызов функции с параметрами - onMouseOver="go('img1',1)", а onmouseoutonMouseOut="go('img1',0)". Первый параметр: "img1"- id рисунка, а второй - 0 или 1 - соответственно, уменьшать или увеличивать рисунок. Все эти параметры проходят через функцию с таймером, который, вероятно, работает не совсем верно:
Код:
function go(idd,sstat) { var idd; var sstat; id=idd; stat=sstat; var timer = 0; timer = window.setInterval("resize(id,stat)", 20) }
Функция go(idd,sstat) вызывает функцию изменения размера:
Код:
function resize(id,stat) { var d=document; var razhei=new Array(d.all[id].height); (*1) var razwid=new Array(d.all[id].height); (*1)
if (stat==1 && d.all[id].width!=140) { (*2) d.all[id].height+=1; d.all[id].width+=1;}
if (stat==0 && d.all[id].height!=120) { (*3) d.all[id].height-=1; d.all[id].width-=1;} }
Здесь 1 - мусор в коде, попытка исправить глюк, 2 и 3 проверка, увеличивать будут рисунок или уменьшать... Функция resize обращается через массив all.
Я так думаю, что ошибка возникает на пути передачи функцией go(idd,sstat) параметров функции resize(id,stat) с использованием timer = window.setInterval("resize(id,stat)", 20).
_________________ Найти все что движется и остановить это!
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.