Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z prostą animacją
melior
post 26.03.2010, 14:29:10
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 3
Dołączył: 7.12.2009

Ostrzeżenie: (0%)
-----


Jest o to taki sobie banalny skrypcik. Skrypt uaktywnia się, gdy najeżdżam na div'a myszką. Wąski pasek w postaci tła przejeżdża od lewej do prawej strony i ostatecznie pojawia się zawartość divów "cdiv" i "cdivm".
Wszystko teoretycznie działa, w praktyce jednak nie zawsze i chaotycznie.

Po pierwsze pasek ładuje się raz szybciej raz wolniej, nie wiem czemu.
Po drugie, czasami animacja wykonuje się dwa razy, czasami zapętla się bez końca.

Może ktoś kuknąć na to jednym okiem i powiedzieć gdzie popełniam błąd? Będę wdzięczny smile.gif

Kod
<div onmouseover="start(<? echo $row['id'];?>)" onmouseout="stop(<? echo $row['id'];?>)" style="height:100px width:816px">


Kod
<div id="thediv<? echo $row['id'];?>" style="background-image:url(pasek<? echo $row['cat']; ?>dol.PNG);background-repeat:no-repeat;background-position:-816px 0px; height:1px; width:816px;">
</div>


Kod
var pos = 0;
var stop_anim = 0;
var x=-816;
var y=0;
var divio = 0;

function changePosition(posx)
{
var posy = 0;
pos = pos + posx;
if (stop_anim == 1) return 1;
if (pos == 816) {
    pos = 0;
    stop_anim = 1;    
    document.getElementById('cdiv'+divio).style.display = 'block';
    document.getElementById('cdivm'+divio).style.display = 'block';
    return 1;
}
document.getElementById('thediv'+divio).style.backgroundPosition=x+pos+"px "+y+"px";
setTimeout('changePosition(5)', 3);
}

function stop()
{
stop_anim = 1;
document.getElementById('thediv'+divio).style.backgroundPosition=x+"px "+y+"px";
document.getElementById('cdiv'+divio).style.display = 'none';
document.getElementById('cdivm'+divio).style.display = 'none';
}

function start(id)
{
stop_anim = 0;
divio = id;
pos = 0;
changePosition(1);    
}
Go to the top of the page
+Quote Post
kamil4u
post 26.03.2010, 18:39:46
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Co w kodzie robi jakieś PHP(powinieneś przedstawić nam już kod wygenerowany przez przeglądarkę, gdyż nie będziemy się domyślać co masz w bazie)?

Spróbuj zamienić tą linkę:
Kod
if (pos == 816) {
na
Kod
if (pos >= 816) {
pos = 816;


Najlepiej pokaz, gdzieś demo tego skryptu, żebyśmy mogli zobaczyć jak to działa lub chociaż _cały_(w jednej części) kod, gdzie ścieżki są do plików znajdujących się gdzieś w necie.

EDIT
Spr. konsolę błędów!

Ten post edytował kamil4u 26.03.2010, 18:40:18


--------------------
Go to the top of the page
+Quote Post
melior
post 27.03.2010, 12:20:54
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 3
Dołączył: 7.12.2009

Ostrzeżenie: (0%)
-----


Link do strony

Zauważyłem, że gdy najadę kursorem na miniaturkę to animacja wyświetla się poprawnie. Dobrze też jest gdy najadę na górę część danej ramki.

Nie rozumiem dlaczego animacja ładuje się jeszcze raz gdy przejdę z obrazka na ramkę obok, będę ruszał kursorem w obrębie całego elementu. onMouseOver i Out ustawiałem już na diva, który obejmuje całą tabelę, cały wiersz i cały czas jest tak samo.

No i również nierozwiązany pozostaje dla mnie problem, iż animacja pojawia się z różnym czasem. Raz wolniej, raz szybciej.

Może ktoś kuknąć na to swoim bystrym okiem? Pewnie to jakaś pierdółka, a ja pomimo długich godzin nie mogę jej dostrzec i zrozumieć sciana.gif
Go to the top of the page
+Quote Post
kamil4u
post 27.03.2010, 13:07:30
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Problem polega na tym, że w JS przy zdarzeniach jest wiele problemów. Jednym z nich jest bubbling. W Twoim wypadku, jest, tak, że gdy najeżdżasz myszką w miejsce pojawienia się div-a "projekt blablala" to wywołuje się zdarzenie onMouseOut, bo wychodzisz z głównego elementu... Poczytaj: http://www.quirksmode.org/js/events_order.html


--------------------
Go to the top of the page
+Quote Post
melior
post 27.03.2010, 18:24:48
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 3
Dołączył: 7.12.2009

Ostrzeżenie: (0%)
-----


Poczytałem, przebudowałem nieco stronkę i jest lepiej smile.gif
Nie jest jednak jeszcze tak jakbym chciał :/

stronka

Jak najadę na obszar zaraz na prawo od miniaturki to tekst się nie zawsze pojawia.
A jak wyjadę na lewo czy prawo, poza całego diva, to już w ogóle głupieje :/

blink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 16:05