Баг с плавностью в Javascript (ч/з setInterval) @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ 1 сообщение ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Мертвый Политик
новый человек
0
Сообщения: 8
Зарегистрирован: 03.07.04
Откуда: Минск
Заголовок сообщения: Баг с плавностью в Javascript (ч/з setInterval)
Сообщение Добавлено: 23 Сентябрь 2004, 14:42:17 
Здесь (менее 10 килобайт) лежит страничка, которая работает не так как надо.

Проблема:Рисунки на ней сначала изменяют свои размеры плавно, а затем все быстрее и быстрее, и в конце концов вообще не видно самого процесса изменения размера - все происходит скачками.

Смысл вот в чем:
при наведении мышки на рисунок, размер которого выставлен в коде HTML меньше чем реальный, он (рисунок) плавно увеличивается до реального размера. Т.е. если если у рисунка реальный размер 143х143 пикселя, то рисунок (onMouseOver) сначала увеличивается (плавно с размера 120х120 до 143х143, а при убирании мышки (onMouseOut) уменьшается обратно до 120х120. а в коде это выглядит так
Код:
<img "src="pic/odin.gif" name="img1" width="120" height="120" id="img1">


Пока что организуется это так: onmouseover передает вызов функции с параметрами - onMouseOver="go('img1',1)", а onmouseout onMouseOut="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).

_________________
Найти все что движется и остановить это!
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ 1 сообщение ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100