Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pętla i instrukcje warunkowe
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
clapton4321
Witam,
mam około dwudziestu instrukcji warunkowych dotyczących różnych sposobów animacji zdjęć. Każda animacja z względu na jej złożoność realizowana jest w pętli for, która to generuje ustaloną ilość elementów, które są potrzebne do wykonania danego efektu wizualnego na zdjęciu. Większość tych efektów jest bardzo podobna do siebie, tzn, np w jednych efekcie używam opacity, a w innym operuje na width lub height.
Jaki sposób jest bardziej optymalny:
1. czy lepiej każdemu efektowi przypisać nową pętlę, która będzie realizowała daną animację (minusem jest powielanie kilkunastu linijek kodu)
2. A może lepiej utworzyć jedną pętlę i za pomocą instrukcji warunkowych tworzyć wyjątki (różnice dla aktualnie wylosowanej animacji).

Proszę o wasze opinie na ten temat.
kamil4u
Lepiej zastosować funkcję z parametrem. Jako parametr podasz 'opacity', 'width' czy 'hight', a w kodzie
Kod
cosCoZmieniasz[ zmienna ] = 'nowa wartosc';


Dla efektów bardziej złożonych robisz switch-a:
Kod
switch( zmienna ){
case 'superEfekt1':
    //.....
    break;
case 'superEfekt2':
    //.....
    break;
default:
  cosCoZmieniasz[ zmienna ] = 'nowa wartosc'; // czyli to gdy zmieniasz 'opacity', 'width' czy 'hight'
}
clapton4321
Problem jest w tym, że czasami podmieniam jakąś wartość a innym razem dodaje lub odejmuje jakieś wartości odpowiedzialne za daną animację.
Może inaczej się spytam:
co jest lepsze:
1. Tworzenie pętli która reazlizuje wybrany efekt (większa ilość kodu ale mnie zadań do realizacji w ciele pętli
2. Instrukcje warunkowe w ciele pętli (mniejsza ilość kodu ale więcej zadań do wykonania wewnątrz pętli, np, pętla ma 20 cykli, przy dwudziestu instrukcjach warunkowych daje to do 400 dodatkowych zadań nim pętla zakończy działaniie - jeżeli źle to rozumiem to proszę mnie poprawić)

Z góry dziękuję za odpowiedzi
kamil4u
Zrób if-y lub switch i dodatkowo każdy efekt wrzuć do funkcji, dzięki temu będziesz miał większy porządek w kodzie.

I wklej tu ze dwa efekty to może da się wymyślić coś lepszego.

Cytat
co jest lepsze:

Nic nie jest lepsze. W tym przypadku bardziej bym się skupił na estetyce kodu, żebyś w przyszłości mógł szybko coś poprawić. 20 cykli to nic( chyba, ze w środku masz skomplikowane operacje, ale wtedy należy optymalizować te operacje. ) Tak samo sprawdzenie warunku if długo nie trwa. Jeżeli masz tego naprawdę dużo to użyj switch, ale różnica będzie niezauważalna dla zwykłego człowieka.

--edit--
Cytat
Cytat
Problem jest w tym, że czasami podmieniam jakąś wartość a innym razem dodaje lub odejmuje jakieś wartości odpowiedzialne za daną animację.

Możesz dorzucić drugi parametr określający jaką operację należy zrobić wink.gif
clapton4321
Efekty mam w swichu i każdy case ma nazwę efektu plus funkcję realizującą ten efekt.

Zmagałem się z dwoma możliwościami:

1.

  1. switch(sprawdzanie efektu){
  2.  
  3. case 'nazwa efektu 1':
  4. case 'nazwa efektu 2':
  5. funkcja 1(jakies zmienne);
  6. break;
  7.  
  8. case 'nazwa efektu 3':
  9. case 'nazwa efektu 4':
  10. funkcja 2(jakies zmienne);
  11. break;
  12. };
  13.  


W tym punkcie instrukcje warunkowe są w funkcjach, które to właśnie skadają się m.in z pętli

2

  1. switch(checkData){
  2.  
  3. case 'nazwa efektu 1':
  4. funkcja 1(jakies zmienne);
  5. break;
  6.  
  7. case 'nazwa efektu 2':
  8. funkcja 2(jakies zmienne);
  9. break;
  10.  
  11. case 'nazwa efektu 3':
  12. funkcja 3(jakies zmienne);
  13. break;
  14.  
  15. case 'nazwa efektu 4':
  16. funkcja 4(jakies zmienne);
  17. break;
  18. };
  19.  

W tym punkcie nie ma instrukcji warunkowych, poniważ każdy efekt jest wo oddzielnym case

Dzięki za odpowiedź, jakiś czas się nad tym zastanawiałem, ale też nie mogłem znaleźć odpowiedzi który sposób będzie lepszy
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.