Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Хочу заставить мерцать точки


Автор: MeLeK 25.12.2004, 13:35
Здраствуйте. Есть скрипт - http://melek.nm.ru/dance.htm. Работает только в ie, в принципе другого и не надо.
Хочу заставить пульсировать точки. Пусть для начала одновременно, но никак не могу сообразить как это сделать.
Как вариант добавить следующую функцию:
Код

function puls(){
for (i=0; i<=length; i++){
num="n"+i;
if (num.s<=0)
num.val=1;
if (num.s>=10)
num.val=-1;
num.s+=num.val;
// вот здесь вся загвоздка
//Пробуем так - не выходит:
document.getElementById(num).filters[0].strength = num.s;

}
setTimeout("puls()",20)
}


Автор: Sardar 25.12.2004, 16:52
Для начала num это птимитив:Строка, никаких полей s и val у неё быть не может. Создать можно, но они не будут сохранятся.
Во вторых свойство фильтра Strength с большой буквы: Object.filters.Glow.Strength=1-255
У тебя туда устанавливается null, причину я обьяснил выше.

Автор: MeLeK 25.12.2004, 17:45
Сменила на:
Код

function puls(){
if (s<=0)
val=1;
if (s>=10)
val=-1;
s+=val;
for (i=0; i<=length; i++){
num="n"+i;
// вот здесь вся загвоздка
//Пробуем так - не выходит:
document.getElementById(num).filters.Glow.Strength = s;

}
setTimeout("puls()",20)
}

Пишет, что требуется объект и не работаетsmile...

Автор: Sardar 26.12.2004, 00:48
Пишем простейший тест:
HTML
<div onClick="toggleGlow()" style="width:400px; height:300px; border: solid 1px black;">
<div id="test" style="text-align: center; vertical-align: middle; filter: Glow(Color=#0298ca, Strength=0); width:400px; height:300px; border: solid 1px black;">
</div>
</div>

Странно, если установить фильтр, то слой вдруг перестаёт отлавливать клики мышью...

Код
function thread() {
 var d=document.getElementById("test");
 if((d.currStrength-d.Sdir)<0) d.Sdir=5;
 else if((d.currStrength+d.Sdir)>255) d.Sdir=-5;
 d.currStrength=d.filters.Glow.Strength=d.currStrength+d.Sdir;
}

function toggleGlow() {
 var d=document.getElementById("test");
 if(d.filters.Glow.enabled) {
       window.clearInterval(thread.tmr);
d.filters.Glow.enabled=false;
 } else {
   d.currStrength=1;
d.Sdir=5;
   d.filters.Glow.enabled=true;
   thread.tmr=window.setInterval(thread, 10);
 }
}


Всё работает smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)