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.