Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JS] Klasa do przesuwania img po ekranie, kazdy obiekt zachowuje sie inaczej
comanderv
post 22.02.2011, 18:22:05
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

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


witać,
mam klasę w JS która zajmuje sie animowanie obiektow, przesuwają je w prawo aż do granicy diva, później odpalana jest metoda do przesuwania w lewo az do granicy diva i wtedy znowu w lewo w prawo w lewo w prawo... dla jednego obiektu wszystko jest ok, wymierzone co do piksela, natomiast gdy dodam kolejne obiekty cos sie dzieje, kazdy zachowuje sie inaczej (kazdy nastepny obiekt ma wieksze odchylenie od granic), czy to jest blad klasy czy poprostu nie tedy droga czy jak?

calosc tutaj: http://www.rytroman.za.pl/maping/fish/fish.html

z góry dziękuje za pomoc smile.gif
Go to the top of the page
+Quote Post
askone
post 22.02.2011, 19:34:38
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Według mnie - bez spojrzenia w kod - mogę powiedzieć, iż wygląda to na błąd związany z przesunięciem względnym. Sprawdź dokładnie:
  1. w jaki sposób inicjalizujesz minimalną wartość współrzędnej X
  2. w jaki sposób obliczasz deltę ruchu po osi X


W tych fragmentach szukałbym błędu...


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
comanderv
post 22.02.2011, 19:46:43
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

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


wartosc poczatkowo przypisuje losowo z przedzialu 0-150, dalej poruszam sie co 50px a gdy jestem blizej jak 50px od krawedzi to ruch wykonywany jest do krawedzi, dla jednego obiektu wszystko dziala idealnie...

w tych fragmentach raczej nie ma nic sknocone, warunki sa proste, obliczenia niewielkie - wszystko dziala dla jednego obiektu....
nie jest dobrze...
Go to the top of the page
+Quote Post
askone
post 22.02.2011, 19:52:37
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


A spróbuj logować w konsoli Firebuga aktualne współrzędne każdej z rybek. Dodatkowo daj też info o dokonanym nawrocie... Może to naprowadzi Cię na błąd w logice - bo zapewne jakiś tam jest wink.gif


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
comanderv
post 26.02.2011, 19:55:28
Post #5





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

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


cos jest w tej klasie nie tak, bo mimo ze za kazda animacja zmieniam this.x w tych funkcjach to jednak te wartosci nie odpowiadaja polozeniu img... dlatego zczytywalem te polozenia za pomoca getElementById ...
ja cos ogolnie chyba w tej klasie knoce... no nic pobawie sie tym jutro...
dzieki za starania smile.gif

edit:

  1. this.plynprawo=function()
  2. {
  3. imgTag.src='ryba0.png';
  4. var tutaj=this;
  5. if(tutaj.x<550)
  6. {
  7. tutaj.x+=(tutaj.x<500)? 50 : 550-tutaj.x;
  8. $('#'+tutaj.id).animate({left: tutaj.x+'px'},
  9. 200,'linear',
  10. function() { tutaj.plynprawo(); } );
  11.  
  12. }
  13. else { //tutaj.plynlewo(); }
  14. tutaj.x; bl = document.getElementById(tutaj.id).style.left;
  15. alert(this.id+'---'+bl+'---'+tutaj.x);
  16. }
  17. }

Nie ma szans zebym tutaj cos zle liczyl sleep.gif
poddaje sie...
http://www.rytroman.za.pl/maping/fish/fish.html
pozycja left:550px to pozycja maksymalna, dalej juz ryba wystaje poza (bo ma dlugosc 50px to img) wszystko licze na sztywno ustawiam do jakiego przesuniecia ma sie zanimowac, NIE WIEM CO JEST ZLE, na koncu ruchu wywalam .x (przesuniecie na jakim ma ryba wyladowac losow, pozniej ja zwiekszam ciagle) i .style.left i oba sa 550 tak jak ma byc! ale wyraznie widac ze kazda nowa ryba ma o 50px dalej polozenie mimo ze JS widzi ze kazda jest na 550px sleep.gif
Pomocy ! wink.gif

edit:
doszedlem do glupiego wniosku... .id mowi o przesunieciu... element o id 0 idzie idelanie, 1 juz o 50px za daleko, 2 o 100px zadaleko...itd...
wzialem to pod uwage w kodzie...
  1. this.plynprawo=function()
  2. {
  3. imgTag.src='ryba0.png';
  4. var tutaj=this;
  5. stab = this.id.split('fish');
  6. if(tutaj.x<550-(stab[1]*50))
  7. {
  8. tutaj.x+=(tutaj.x<500-(stab[1]*50))? 50 : 550-(stab[1]*50)-tutaj.x;
  9. $('#'+tutaj.id).animate({left: tutaj.x+'px'},
  10. 200,'linear',
  11. function() { tutaj.plynprawo(); } );
  12. }
  13. else
  14. {
  15. //tutaj.plynlewo(); }
  16. tutaj.x; bl = document.getElementById(tutaj.id).style.left;
  17. alert(this.id+'---'+bl+'---'+tutaj.x);
  18. }
  19. }

dzialac dziala... ALE, dlaczego na przesunicie na ekranie wplywa mi jakakolwiek zmienna ? sleep.gif

edit: zrobic zrobilem.... ale to nie ma sensu ;/ im wieksze id (ost cyfra id... bo id ida 'fish0' 'fish1' 'fish2' ...) tym wieksze przesuniecie od krawedzi mam ktorego nawet JS nie dostrzega sleep.gif

edit: sprawdzalem dla 18 elementow, nawet liczby losowe z przedzialu 0-150 dla niektorych wynosily ponad 600 (te liczby to mialy byc odsuniecia left i top)

Dlaczego ta klasa sie tak zachowuje?? na serwie max 12 rybek zeby sie nie psulo... potem juz za duze liczby wychodza i jakies przesuneicia chore... zapraszam do ogladania i szukania gdzies w tym logiki haha.gif

klopot sprawialo "position: relative" zmienilem na "absolute" i wszystko ok...
dzieki za pomoc, do zamkniecia...

Ten post edytował comanderv 23.02.2011, 11:16:15
Go to the top of the page
+Quote Post
wszerad
post 27.02.2011, 20:56:10
Post #6





Grupa: Zarejestrowani
Postów: 106
Pomógł: 18
Dołączył: 11.12.2008

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


Może warto pomyśleć o canvas? Mam wrażenie, że chcesz robić jakieś proste gierki ale niestety przesuwanie elementów DOM często okazuję się wolniejsze niż rendowanie grafiki. Kurs Canvas tu masz nawet przykład bardzo podobny do twojej strony z tym, że użyte są gwiazdki.
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: 15.06.2025 - 19:39