[ Pobierz całość w formacie PDF ]
.Funkcja changeSlide() zosta³a taknapisana, aby potrafi³a obs³u¿yæ obie te sytuacje, a znajdziemy j¹ w wierszach165–170:function changeSlide(offset) {hideLayer('slide' + curSlide);curSlide = (curSlide + offset < 0 ? slideShow.length - 1 :(curSlide + offset == slideShow.length ? 0 : curSlide + offset));showSlide('slide' + curSlide);}Najpierw wywo³ywana jest hideSlide() z wyra¿eniem 'slide' + curSlide jakoparame­trem.curSlide pocz¹tkowo, w wierszu 13, ustawiona by³a na 0.Jako ¿eobecnie jest to ogl¹dany slajd, funkcja hideSlide ukryje slide0, czyli ptaka.Wydaje siê to jasne.Który slajd ma byæ teraz pokazany?Pamiêtajmy, ¿e changeSlide() jako parametru oczekuje przesuniêcia, czyli liczby1 lub -1.1 oznacza przesuniêcie wprzód, -1 cofniêcie siê o jeden slajd,a w naszym wypadku wyœwietlenie z kolei slajdu ostatniego.Poniewa¿ curSlide toliczba ca³kowita oznaczaj¹ca indeks bie¿¹cego slajdu, dodanie jedynki zmieniaæbêdzie tê wartoœæ na 1, 2 i tak dalej.-1 powoduje pokazanie poprzedniegoslajdu ze slideShow.Jeœli by³ nim slajd czwarty, o indeksie 3, wynikiem bêd¹kolejno 2, 1, potem 0.Wszystko jest dobrze, póki nie próbujemy ukryæ slajdu 'slide' + -1 lub 'slide'+ slide­Show.length.Takie slajdy nie istniej¹ i mo¿na byæ pewnym pojawieniasiê b³êdów sk³adnio­wych.Jak zatem uchroniæ siê przed wartoœci¹ curSlidemniejsz¹ od zera lub wiêksz¹ od slide­Show.length-1?Odpowiedzi¹ s¹ wiersze 167 i 168:curSlide = (curSlide + offset < 0 ? slideShow.length - 1 :(curSlide + offset == slideShow.length ? 0 : curSlide + offset));Wartoœæ curSlide okreœlana jest przy u¿yciu zagnie¿d¿onego operatoratrójargumentowego.Oto pseudokod:JEŒLI curSlide + przesuniêcie JEST MNIEJSZE OD 0, TOcurSlide STAJE SIÊ RÓWNE slideShow.length - 1W PRZECIWNYM WYPADKUJEŒLI curSlide + przesuniêcie JEST RÓWNE slideShow.length, TOcurSlide STAJE SIÊ RÓWNE 0W PRZECIWNYM WYPADKUcurSlide STAJE SIÊ RÓWNE curSlide + przesuniêcieKiedy wartoœæ curSlide zostanie ju¿ okreœlona, mo¿na spokojnie wywo³aæshowSlide() w 169 wierszu.setSlide()changeSlide() jest jedn¹ z dwóch funkcji u¿ywanych do zmiany slajdów.O ilechangeSlide() zmienia slajdy na nastêpny i poprzedni, to setSlide() ukrywaslajd bie¿¹cy i pokazuje dowolny slajd o przekazanym jej indeksie.Oto tafunkcja, znajduj¹ca siê w wierszach 172–177:function setSlide(ref) {if (tourOn) { return; }hideSlide('slide' + curSlide);curSlide = ref;showSlide('slide' + curSlide);}W pierwszym wierszu sprawdza siê wartoœæ zmiennej tourOn, aby nic nie by³owykonywane, jeœli jesteœmy w trakcie automatycznego pokazu, gdy¿ w takiejsytuacji zmiany slajdów nastêpuj¹ auto­matycznie.Podobnie jak changeSlide(), i setSlide() ukrywa bie¿¹cy slajd, ale tym razemnie ma zna­czenia, jaki to by³ slajd (curSlide).Wartoœæ parametru refprzypisywana jest zmiennej cur­Slide, a nastêpnie jako bie¿¹cy jest pokazywanyslajd z takim w³aœnie numerem.autoPilot()Jak zapewne ³atwo siê domyœliæ, funkcja autoPilot() steruje automatycznympokazem.Funkcja ta jest w³¹czana i wy³¹czana tym samym ³¹czem na ekranie.Zakodowano j¹ w wierszach 186–198:function autoPilot() {if (tourOn) {clearInterval(auto);imageSwap(slideShow[curSlide].name, curSlide, false);}else {auto = setInterval('automate()', showSpeed);imageSwap(slideShow[curSlide].name, curSlide, true);showSlide('menu');visible = true;}tourOn = !tourOn;}Funkcja autoPilot() „wie”, czy automatyczny pokaz zosta³ w³¹czony, czy nie,dziêki zmiennej tourOn.Jeœli wartoœci¹ tej zmiennej jest false, pokaz jestwy³¹czony, wiêc funkcja u¿ywa me­tody setInterval() obiektu window do wywo³aniafunkcji automate() (omówionej dalej) co showSpeed milisekund.Dobrze by³oby widzieæ przesuwanie siê wskaŸnika menu podczas zmiany kolejnychslajdów.Jako ¿e u¿ytkownik klikn¹³ obrazek Automate, autoPilot() pokazuje menuslajdów (jeœli nie by³o go widaæ wczeœniej) i podœwietla pierwszy pokazywanyslajd.Funkcja automate() zajmuje siê ju¿ reszt¹.Jeœli jednak automatyczny pokaz w³aœnie trwa (zmienna tourOn ma wartoœæ false),autoPi­lot() za pomoc¹ metody clearInterval() obiektu window odwo³a wywo³aniesetInte­rval(), zwi¹zane ze zmienn¹ auto.Aby oczyœciæ sytuacjê, ostatniewywo³anie imageSwap() znów przywraca niepodœwietlony obrazek w menu.Ostatnie zadanie funkcji autoPilot() to zmiana bie¿¹cej wartoœci tourOnna wartoœæ prze­ciwn¹ [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl