Flash Help
Flash
ActionScript
Příklady





Webmaster

      Martin Hozík
      hozikm@seznam.cz
      ICQ: 323756613


W3C Validita

      HTML 4.0 validní




Vlastní kurzor a duplikace MC

V této kapitole jsem se rozhodl spojit 2 příklady dohromady, protože jsou velmi jednoduché a krátké.


1. Vlastní kurzor

Poslední dobou se v mojí poště množí dotazy na vytvoření vlastního kurzoru. Dnes vám vysvětlím jeden způsob, jak ho vytvořit. Tento postup nenahrazuje ani tak kurzor samotný, ale namísto něj zobrazí určitý MovieClip

  • Takže nejprve si vytvoříme MovieClip, který může obsahovat jak statickou, tak i pohyblivou grafiku. Je velmi důležité dbát na správnou pozici středu (symbol "+")

    Kurzor
  • Tento MovieClip vložíme na plochu a definujeme mu následující příkazy:

    onClipEvent (load) {
               Mouse.hide();
               startDrag(this, true);
    }
    onClipEvent (mouseMove) {
               updateAfterEvent();
    }
    

    Předchozí příkazy znamenají, že po načtení animace se nejprve skryje kurzor myši (Mouse.hide()), jinak by totiž byl vidět spolu s MovieClipem

    A následně se zahájí tažení našeho MC (this=tento), přičemž je je pozice kurzoru uzamčena do středu MC (Lock mouse to center)

    Pokud bychom to nechali takto, aktualizovala by se pozice v závislosti na framerate, což by vyžadovalo použití vysoké framerate (18-25). My však použijeme příkaz  updateAfterEvent();, který při jakémkoliv pohybu myši (mouseMove) aktualizuje proměnné _xmouse a _ymouse, charakterizující pozici myši v animaci. Tím pádem bude pohyb kurzoru zcela plynulý a nezávislý na rychlosti přehrávání.

  • To je vše. Jen mějte na paměti, že kurzor by neměl uživatele rušit, a už vůbec ne otravovat.




2. Duplikace MovieClipu

Jak jistě víte z kapitoly "Knihovna", je možné vytvářet velké množství instancí symbolů umístěných v knihovně, aniž by se zvětšila velikost animace a těmto instancím měnit řadu atributů.

Podobnou operaci s MovieClipem umožňuje příkaz duplicateMovieClip(). Asi bude nejlepší, když vám jeho funkci předvedu na následujícím příkladu:

  • Řekněme, že máme na ploše umístěn MC s názvem "prvni"

  • Dále do 1. snímku animace umístíme následující příkaz:

    duplicateMovieClip("prvni", "druhy", 1);
    

    Tento příkaz vytvoří kopii MC "prvni" s názvem "druhy". Ta jednička na konci je tzv. Hloubka (Depth). Toto číslo určuje pozici MC v ose Z. Počáteční MC má depth=0 a tím pádem bude jeho duplikát "druhy" vidět nad ním. (Pokud by tam místo 1 bylo -1, tak by to bylo opačně)

  • Efekt předchozího příkazu by byl prakticky nulový (kopie by byla identická a na stejném místě). Proto použijeme příkaz setProperty(). Například:

    setProperty("druhy", _alpha, 50);
    setProperty("druhy", _rotation, 15);
    setProperty("druhy", _x, 130);
    setProperty("druhy", _y, -50);
    

    tyto příkazy nastaví duplikátu 50% průhlednost (alpha), otočí ho o 15° (rotation) a definují mu pozici _x=130 a _y=-50




Takže už víte, jak duplikace MC funguje a teď si vytvoříme trošku složitější příklad. Pokud bychom chtěli vytvořit vetší množství kopií s podobnými vlastnostmi, bylo by psaní příkazů docela zdlouhavé. My tedy použijeme smyčku.

  • nejprve si tedy, jako v předchozím případě, vytvoříme MC, umístíme jej na plochu a pojmenujeme pro změnu "bod"

  • Tomuto MC definujeme následující příkazy:

    onClipEvent (load) {
              _root.xpos = _x;
              _root.ypos = _y;
    }
    

    Tento zápis znamená, že po načtení animace se do proměnných xpos a ypos zapíše počáteční pozice MC "bod" (_x a _y). Od této pozice se pak budou umísťovat kopie.

  • Nyní můžeme do 1. snímku definovat následující příkazy (v ukázce jsem je, kvůli názornosti, definoval tlačítku)

    var i = 1;
    while (i<=450) {
           duplicateMovieClip("_root.bod", "bod"+i, i);
           setProperty("bod"+i, _x, _root.xpos + i);
           setProperty("bod"+i, _y, _root.ypos - Math.tan(i/20)*10);
           i++;
    }
    

    Zde je použita nejjednodušší smyčka (While). Na samém začátku je definována lokální proměnná i=1. Následuje smyčka, která vykonává příkazy dokud platí, že i <= 450 (menší nebo rovno).

    Je tedy duplikován MC ("bod") a jeho kopii je přiřazen název "bod"+i.

    Následuje nastavení vlastností nově vzniklého MC. V našem případě se definuje x souřadnice jako pozice počátečního MC + i.

    Dále je určena y souřadnice, tentokrát pomocí goniometrické funkce tangens (Math.tan).

    Úplně nakonec se k proměnné i přičte jednička (++)


    Pro názornost - 5. cyklus by se mohl nahradit tímto zápisem:

    duplicateMovieClip("_root.bod", "bod5", 5);
    setProperty("bod5", _x, _root.xpos + 5);
    setProperty("bod5", _y, _root.ypos - Math.tan(0.25)*10);
    
  • Pro šťouraly: výraz uvnitř funkce tangens je podělen 20 (zvětšení periody) a celá funkce je vynásobena 10 (zvětšení amplitudy).




Prohlédnout
prohlédnout


Stáhnout
stáhnout [24 kB]






Nahoru

Copyright © Martin Hozík - All rights reserved.
Flash are registered trademark of Macromedia Inc.