Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS/canvas/VML] Rysowanie na ekranie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
fragles
Pojawiła się potrzeba narysowania wykresu, modyfikacji, zobaczenia go w różnej skali i tego typu operacji - jakoś sobie poradziłem znalazłem coś o CANVAS i VML i metoda prób i błędów rysuje, ale że jestem mało obeznany z tematem to mam parę pytań

1)co się stanie gdy "puszczę" rysowanie wykresu - czyli zapuszczę cyklicznego ajaxa, który z bazy pobiera ewentualne zmiany stanu i dorysowuje coraz to kolejny odcinek - czy istnieje możliwość przepełnienia np tablicy, zbierającej punkty [x,y] przepełnienia canvasa czy vml-a? Czy gdy na canvasie będzie np 1000 czy 100000 wyrysowanych odcinków to czy będzie to problem dla wydajności?
Wiem, że to jest w jakims stopniu uzależnione od sprzetu klienta, ale czy można sprzętowi jakoś ulżyć

2)odświerzanie wykresu np przy przesuwaniu, pomniejszaniu, powiększaniu. Gdy tworzę na canvasie linie złożoną z n-odcinków to mi ją zamyka (nie wiem co robię źle) no to tworzę na razie linię jednoodcinkowe. Czy to jest jakiś problem wydajnościowy, czy lepiej tworzyć linie wieloodcinowe, czy nie ma różnicy dla wydajności? i jak zrobić żeby nie zamykało

3)jako, że danych może być sporo to jak sprawdzić czy JS uciągnie, np mam tablicę, a właściwie strukturę wyglądającą mniej wiecej tak
Kod
obiekty = new Array();
obiekty[i] = new Object;
obiekty[i].id = id;//jakieś id obiektu z bazy - aby można było np po kliku przesłac i pobrac jakieś
obiekty[i].kolor = kolor;
obiekty[i].punkt = new Array();
obiekty[i].punkt[j] = new Object;
obiekty[i].punkt[j].x = x;
obiekty[i].punkt[j].y = x;

//jako że punkty przychodzą po ID, a nie zawsze każdy obiekt się zmienia, a przychodzą te które się zmieniły to zrobiłem tablicę powiązań

powiazania = new Array();
powiazania[id]=i;//id -> id obiektu w bazie. i -> indeks w tablicy obiekty

//dzięki temu jak cos przychodzi mogę zrobić tak - np dodac nowy punkt

obiekty[powiazania[i]] .punkty[/*OBECNA DLUGOSĆ TABLICY*/]=new Object();
obiekty[powiazania[i]] .punkty[/*OBECNA DLUGOSĆ TABLICY*/].x=y;
obiekty[powiazania[i]] .punkty[/*OBECNA DLUGOSĆ TABLICY*/].y=x;

czy taka organizacja jest wydajna - czy mozna to jeszcze zoptymalizować poprzez inną organizację

no i ile tego może sie pomieścić np - ktoś sobie zapuszcza to na cały dzień i mu się uzbiera np 100MB, albo i 500MB - nie wiem czy to jest moziwe, czy to jest realne, dlatego pytam
erix
Nie wiem, czy to chodzi o coś takiego: http://code.google.com/p/flot/

Cytat
3)jako, że danych może być sporo to jak sprawdzić czy JS uciągnie, np mam tablicę, a właściwie strukturę wyglądającą mniej wiecej tak

Jakiś czas temu czytałem, że przeglądarki radzą sobie z tablicami do około 6000 obiektów, ale nie jestem w 100% pewien. Choć wydaje mi się, że już narysowanych elementów nie trzeba już trzymać w pamięci, gdyż zostają one na płótnie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.