K čemu jsou vlastně dobrá Arrays neboli pole? III. díl - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Poptávka práce


Webdesign

K čemu jsou vlastně dobrá Arrays neboli pole? III. díl

16. listopadu 2001, 00.00 | Závěrečný díl tohoto miniseriálu je sice poměrně krátký, nicméně velmi hutný a je věnován funkci, která poměrně citelně urychlí některé vaše skripty... a takové krátké úvaze o českém fleším lidu...

Už mnohokrát jsem zde na Grafice ve svých tutorialech pokňourával nad slimáčím tempem, kterým se některé skripty v AS šinou. A v minulém tutorialu o objektech Array a String a manipulacích s nimi jsem vám slíbil, že pravděpodobně nejpomalejší metodu v AS, String.split, můžete přepsat tak, že bude výrazně rychlejší.

Pokud se v této chvíli ptáte, k čemu že String.split slouží, rád bych vám připomněl jeden svůj starší tutor Nepublikované funkce Flash 5, I. díl, který najdete zde. V něm najdete návod jak vytvořit jednoduchou off-line gamesku včetně ukládání výsledků na uživatelův disk.

Pokud jste si výše uvedený tutorial prošli, určitě jste si všimli, že v okamžiku, kdy Flash čte nebo zapisuje výsledky na disk, celý skript na chvíli zmrzne... tak, a právě velmi pomalý běh metody String.split, která se zde používá pro načítání a rozsekání externího textového souboru, způsobuje ono zadrhnutí.

Ve svých dvou předchozích tutorialech jsem se již zmiňoval o možnosti nadefinovat pomocí prototypů zcela nové vlastnosti objektů (pokud jste si například hráli s Tsunami efektem, určitě si vzpomenete, o co jde).

Pomocí prototypu se dá také přepsat ona výše zmiňovaná protivně líná metoda. Skript, který zde uveřejňuji, nepochází z mého pera... eeeeee, tedy klávesnice, našel jsem ho v několika různých verzích od různých autorů, ale ty různé verze se liší jen názvy proměnných. A protože se tato funkce už nedá napsat líp, nepokoušel jsem se o to :o).

Tak, a tady ta funkce je:

String.prototype.split = function(d){
  var i = 0;
  var j = 1;
  var pos = 0;
  var size = this.length;
  var result = new Array();
  if (d.length == 1){
    while(i<=size){
      if (substring(this, i,1) == d){
        result.push(substring(this, pos,(i-pos-j)));
        j = 0;
        pos = i+1;
      }
      ++i;
    }
    pos<i ? result.push(substring(this, pos)) : null ;
    return result;
  }if (d == "" || d == null){
    return this.toCharArray();
  }else{
    result[0] = this;
    return result;
  }
}

Celá funkce je ve své podstatě velmi jednoduchá. Pomocí manipulací s objekty Array a String (všechny je najdete popsané i s příklady v předchozích dvou dílech tohoto miniseriálu) se textový řetězec v jedné jednoduché smyčce rozkrájí podle nadefinovaných pravidel.

Jistě vás napadá "co teď s tímhle štrúdlem skriptů?" Je to velice jednoduché: kdekoliv jste použili, používáte nebo budete používat metodu String.split, umístíte výše uvedenou funkci třeba na první frame základní časové osy. Kouzlo dědičnosti (prototypování) je právě v tom, že stačí skript napsat jen jednou a pak už nikdy nemusíte tuto funkci volat, sama se spouští jako vlastnost nebo metoda objektu...

A výsledek? Přepsaná metoda String.split je zhruba 3 - 6x rychlejší než ta původní. Sice to nevypadá na první pohled nijak bombasticky, ale pokud máte skript, ve kterém vás pomalý běh String.split žral, po přepsání to vypadá jako malý zázrak....

Samozřejmě si můžete také stáhnout .fla soubor, který na prvním framu obsahuje právě tuto funkci, najdete ho zde.

Na závěr tohoto tutorialu bych ještě chtěl připojit takovou krátkou úvahu o českém fleším lidu. Zdá se mi takový podivně zakřiknutý... a nesmělý... Občas se podívám do diskuzí třeba k fotošopím tutorum a je to úplně o něčem jiném... ne tedy, že bych tak strašně toužil po těch emocionálních dramatech, které po některých článcích o Photoshopu vybuchují :o)), ale připadne mi to zvláštní.... jako by se český fleší lid držel někde tiše v koutku, zatímco bitmapáři a typografové řádí.... Když sleduji návštěvnost svých tutorialů, zjišťuji, že nejvíc lidí chodí na ty jednoduché, spíše začátečnické... tak mi vrtá hlavou: je tady v Čechách opravdu tam málo lidí, kteří se Flashem zabývají? A jsou to opravdu většinou zakřiknutí začátečníci? Co myslíte vy?

Tématické zařazení:

 » Rubriky  » Go verze  

 » Rubriky  » Webdesign  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: