Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] sposób składowania danych
CuteOne
post
Post #1





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Tytuł tematu zapewne nie mówi za wiele, więc postaram pokrótce opisać mój mały problem. Otóż za pomocą JS chcę utworzyć krótkie animacje np. poruszających się piłeczek. Problem w tym, że każda akcja (np. ruch, kolizja itp.) musi być gdzieś "składowana" na początku rozsądnym rozwiązaniem wydał mi się JSON :
[JAVASCRIPT] pobierz, plaintext
  1. var objects = [
  2. {name: "kulka-1", x: 12, y:13},
  3. {name: "kulka-2", x: 11, y:13},
  4. {name: "kulka-3", x: 10, y:13}
  5. ];
  6.  
  7. var action = [
  8. [{x:15, y:25}, {x:15, y:20},{x:10, y:25}], //każda akacja zapisana w ten sposób gdzie index odpowiada objects[indeks]
  9. [{x:45, y:25}, {"type": "colison", x:15, y:23},{x:11, y:25}],
  10. [{x:95, y:25}, {x:15, y:28},{x:15, y:25}]
  11. ];
[JAVASCRIPT] pobierz, plaintext


Niestety tego typu zapis jest mało wydajny:
- dla 100 obiektów 10 sekundowa animacja zajmuje grubo ponad 500kb
- JS strasznie zamula podczas odczytywania tak składowanych wartości (chociaż nie powinien :/)

Stąd moje pytanie czy istnieje jakiś format zapisu, który pozwoli na łatwy odczyt zawartości + minimalną wielkość tworzonego pliku
?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


nie wiem jak dokładnie ustawiasz własności poszczególnych obiektów ale zapewne każdego z osobna - zmiana pojedynczej własności w zasadzie niemal zawsze powoduje renderowanie - przeliczanie... i to właśnie tutaj jest problem - niektóre przeglądarki nie renderują nawet dom'u jeśli stale są robione zmiany (ale to te nowsze i nie wszystkie - już nie jestem w temacie)... ale najlepiej jeśli byś ustawiał wszystkie właściwości obiektów tylko raz - możesz to zrobić np. przez utworzenie dynamicznego elementu style w drzewie dom - wcześniej każdemu elementowi np. przypisując jakieś id, i w tym style możesz określać sytuację końcową - poczytaj na stronie opery o modyfikacjach dom i o ustawianiu kilku styli na raz (już wspomniałem jak to można zrobić zamiast podmiany klasy to po prostu podmieniasz zawartość elementu style z przygotowanym wcześniej opisem styli dla poszczególnych id na raz):
Efficient JavaScript -> DOM (page 3)

lub o ile dobrze pamiętam przed ustawianiem styli w następnej klatce mógłbyś na całą animację dać display:none; ustawiać pojedynczo style tak jak robisz i zmiana chyba też przy renderowaniu dokona się raz - no 2 razy - display:none i display block - to też powinno przyśpieszyć...

animacje by były płynne dla ludzkiego oka to odstęp między klatkami musi wynosić około 40ms (25fps -> co 40ms klatka), fakt, niektóre filmy mają chyba delikatniej mniejszy fsp i chyba wynosi on 23,7 fps ale to szczegół...

mógłbyś jeszcze poczytać o transition (czy jakoś tak się zwie) i ustawić go na liniowy - jeśli przez np. 3s coś się przemieszcza stale po tej samej linii to na początku mógłbyś zmienić wartość na końcową, czas zmiany ustawić na te 3s i w kolejnych klatkach masz np. null co znaczy, że nie wprowadzasz żadnych zmian w stylach...

Ten post edytował zegarek84 25.10.2011, 13:47:12
Go to the top of the page
+Quote Post

Posty w temacie
- CuteOne   [JS] sposób składowania danych   23.10.2011, 21:49:18
- - croc   JavaScript krztusi się już przy średnich rozmiarów...   23.10.2011, 22:01:48
- - CuteOne   Po liniach tylko dla 100 piłeczek w jednej klatce ...   23.10.2011, 22:05:24
- - darko   Ogólnie ciężko będzie znaleźć jakieś alternatywne ...   23.10.2011, 22:22:04
- - croc   Wydaje mi się, że canvas jeszcze pogorszy sprawę. ...   23.10.2011, 22:28:33
- - darko   Canvas jest w powijakach jeszcze, ale jest rozwojo...   23.10.2011, 22:47:36
- - croc   W najnowszych wersjach FF canvas działa nie najgor...   23.10.2011, 22:51:51
|- - Pawel_W   Cytat(croc @ 23.10.2011, 23:51:51 ) w...   23.10.2011, 23:04:04
- - everth   A ja dalej nie rozumiem co kolega miał na myśli. Z...   23.10.2011, 22:56:55
- - CuteOne   Animację tworzę właśnie w canvas (dlatego wspomnia...   24.10.2011, 00:40:58
- - everth   CytatTaki zapis wydaje mi się najbardziej optymaln...   24.10.2011, 16:30:39
- - CuteOne   Dzięki za odpowiedź. Chyba nie bardzo wiem jak by...   24.10.2011, 16:54:51
- - everth   Bardziej cosik takiego [JAVASCRIPT] pobierz, plain...   24.10.2011, 18:37:15
- - wNogachSpisz   http://en.wikipedia.org/wiki/Web_Workers   24.10.2011, 18:50:15
- - CuteOne   Dzięki evereth ! Twój sposób zapisu wydaje się...   24.10.2011, 23:24:18
- - zegarek84   nie wiem jak dokładnie ustawiasz własności poszcze...   25.10.2011, 13:46:20
|- - everth   Cytat(zegarek84 @ 25.10.2011, 14:46:2...   25.10.2011, 21:09:04
- - CuteOne   Wszystko było by pięknie gdyby nie to że animację ...   25.10.2011, 17:11:43
- - CuteOne   Po delikatnych przeróbkach Twojego kodu (everth, d...   27.10.2011, 15:38:54
- - wNogachSpisz   Cytat(CuteOne @ 25.10.2011, 18:11:43 ...   27.10.2011, 15:48:33


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

 



RSS Aktualny czas: 9.10.2025 - 19:41