Natalymath
Новичок
Дата регистрации:
10.06.2011 06:20:37
Сообщений: 2
Мигающая кнопочка, код которой приведён на сайте, меня заинтересовала, и я потратила некоторое время на выяснение причин, почему, как выразился Сева, происходят "жуткие цветовые эффекты" при быстром движении мышки. И пришла к некоторым выводам. А именно: добавление к коду проверки условия flag=true (при onMouseOver) или flag=false (при onMouseOut)не влияет на то, что происходит на экране.
Код функции выполняется мгновенно, а setTimeOut влияет только на скорость вывода полученных данных на экран, но не на скорость выполнения команд.
Т.е. каждый раз при движении указателя над кнопкой запускаются сначала одна функция, потом другая, и обе выполняются полностью, до конца цикла.
Единственный выход, который я вижу - брать начальный и конечный цвета кнопки гармонично подходящими. Например:
<html>
<head>
<script language = "javascript">
var flag;
function mouseOver() {
flag=true;
for (i = 16; (i < 240)&&(flag==true); i++)
setTimeout ('document.blinkbutton.button.style.background = "#'+i.toString(16)+'FF33";', i * 3);
}
function mouseOut() {
flag=false;
for (i = 16; (i < 240)&&(flag==false); i++)
setTimeout ('document.blinkbutton.button.style.background = "#'+(256-i).toString(16)+'FF33";', i * 3);
}
</script>
</head>
<body>
<form name = "blinkbutton">
<input type="button" name="button" value=" Наведи мышку " onMouseOver='mouseOver()' onMouseOut='mouseOut()' style="background-color: #10FF33;">
</form>
</body>
KotOFF
Освоившийся
Дата регистрации:
25.05.2012 10:21:29
Сообщений: 33
<head>
<script language = "javascript">
arrColor = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
function mouseOut() {
for (i = 0; i < 13; i++)
setTimeout ('document.blinkbutton.button.style.background = "#'+arrColor[15-i]+'0'+arrColor[15-i]+'FFF";', i * 50);
}
function mouseOver() {
for (i = 0; i < 15; i++)
setTimeout ('document.blinkbutton.button.style.background = "#'+arrColor[i]+'0'+arrColor[i]+'F31";', i * 50);
}
</script>
</head>
<body onload = "startShow()">
<form name = "blinkbutton">
<input type="button" name="button" value=" Наведи мышку " onMouseOver='mouseOver()' onMouseOut='mouseOut()' style="background-color: #1400FF">
</form>
</body>