Flash Help
Flash
ActionScript
P°φklady





Webmaster

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


W3C Validita

      HTML 4.0 validnφ




SmartClip

Dnes vßs seznßmφm s trochu mΘn∞ znßmou funkcφ, kterou je vytvo°enφ z obyΦejnΘho MovieClipu SmartClip (komponent).

ObyΦejn∞ se p°i vytvß°enφ animacφ sna₧φme o co nejv∞tÜφ interaktivitu - p°edat ot∞₧e animace do rukou u₧ivatele. Dnes to bude trochu naopak. SmartClip toti₧ na stran∞ divßka vypadß jako obyΦejn² MC.

Ona chytrost (smart = chytr²) tohoto klipu spoΦφvß v mo₧nosti animßtora naprogramovat si urΦit² prvek (t°eba tlaΦφtko), p°id∞lit mu prom∞nnΘ, naprogramovat zp∙sob chovßnφ v urΦit²ch situacφch a nakonec si vytvo°it menu, kde tyto vlastnosti bude mo₧no nastavit.

Pak ji₧ staΦφ vlo₧it onen klip do n∞jakΘ animace, nastavit si hodnoty a prßce je hotova. V kostce °eΦeno je to MovieClip s kontrolnφm panelem (kter² vÜak mß k dispozici jen animßtor). V nßvodu Flashe se doΦtete, ₧e je tato funkce ideßlnφ p°i prßci v t²mu, ale vyu₧ije ji i jednotlivec.



1. Vytvo°enφ MovieClipu

Jak ji₧ bylo °eΦeno, SmartClip je zalo₧en na klasickΘm MovieClipu. V dneÜnφm p°φkladu si ud∞lßme kreslicφ plßtno, na kterΘ bude mo₧no malovat Üt∞tcem.

  • Nejprve vytvo°φme MC a pak jeÜt∞ tzv. neviditelnΘ tlaΦφtko (tj. tlaΦφtko s grafikou jen ve snφmku "HIT")

  • tlaΦφtko pak vlo₧φme do MC

  • Dßle si vytvo°φme dalÜφ MC, do kterΘho nakreslφme stopu Üt∞tce, vlo₧φme do prvnφho MC a pojmenujeme t°eba "brush" (brush = st∞tec)

    Pozn.: Do dalÜφch snφmk∙ MC "brush" m∙₧eme nakreslit vφce druh∙ tvar∙ stop.

  • TlaΦφtku definujeme nßsledujφcφ p°φkazy:

    on (press, dragOver) {
         pressing = true;
    }
    on (release, releaseOutside, dragOut) {
         pressing = false;
    }
    

    P°edchozφ zßpis znamenß, ₧e po kliknutφ nebo ta₧enφ dovnit° je nastavena prom∞nnß pressing jako pravda.

    Po puÜt∞nφ tlaΦφtka nebo ta₧enφ ven je nastavena prom∞nnß pressing na nepravda.

  • MovieClipu Brush pak definujte tyto p°φkazy:

    onClipEvent (load) {
          c = new Color(this);
          c.setRGB(_parent.col, 16);
          this.gotoAndStop(_parent.paint);
          setProperty(this, _xscale, _parent.xscl);
          setProperty(this, _yscale, _parent.xscl);
          setProperty(this, _alpha, _parent.alp);
          i = 0;
    }
    

    P°edchozφ p°φkazy se vykonajφ po naΦtenφ MC "brush".

    Prvnφ °ßdek urΦuje hodnotu prom∞nnΘ "c" jako objekt "new Color()", kter² nastavuje barvu instance MovieClipu (v naÜem p°φpad∞ this = tento, tedy "brush")

    Druh² °ßdek definuje metodu (method) p°edchozφho objektu - setRGB - nastavujφcφ hodnotu jako barvu v hexadecimßlnφm zßpisu (ta Üestnßctka na konci) rovnu hodnot∞ prom∞nnΘ "col", definovanou o ·rove≥ v²Ü (_parent)

    T°etφ °ßdek zp∙sobφ p°eskoΦenφ p°ehrßvaΦe uvnit°  MC "brush" na snφmek definovan² prom∞nnou "paint" (zm∞na tvaru Üt∞tce)

    DalÜφ 3 °ßdky nastavujφ atributy MC "brush" (velikost, pr∙hlednost), jejich₧ hodnoty jsou op∞t nahrazeny prom∞nn²mi.

    Uff... a nakonec je prom∞nnß "i"nastavena na 0 (poΦφtadlo cykl∙  - viz nφ₧e)

  • VÜechny klφΦovΘ snφmky v naÜem SmartClipu (no on je to stßle jeÜt∞ MovieClip...) roztßhneme na Üφ°ku 2 snφmk∙

  • druhΘmu snφmku pak definujeme toto:

    if (pressing == true) {
          duplicateMovieClip("brush", "brush"+i, i);
          setProperty("brush"+i, _x, _xmouse);
          setProperty("brush"+i, _y, _ymouse);
          i++;
    }
    gotoAndPlay(1);
    

    Tak₧e toto znamenß, ₧e pokud je naÜe neviditelnΘ tlaΦφtko zmßΦknuto (pressing == true), zkopφruje se MC "brush" a p°id∞lφ se mu jmΘno "brush" + i  (brush1, brush2, brush3,...) a p°enese se do ·rovn∞ (depth) "i" - viz p°φklad duplikace MovieClipu

    A nastavφ se tΘto kopii pozice rovna pozici myÜi.
    Nakonec se p°iΦte k poΦφtadlu jedniΦka a p°ejde se zp∞t na snφmek 1 a celß procedura se opakuje.

    /li>

2. P°em∞na na SmartClip

Jak jste si jist∞ povÜimli, nahradili jsme v∞tÜinu hodnot v p°edchozφch p°φkazech prom∞nn²mi. Tyto prom∞nnΘ tedy budou zakotvenΘ ve SmartClipu jako editovatelnΘ.


  • Prav²m klikem na hlavnφ MC vyvolejte kontextovou nabφdku a zvolte "Component Definition"

  • M∞lo by se otev°φt stejnojmennΘ okno. V jeho hornφ Φßsti m∙₧ete tlaΦφtkem "+" p°idßvat editovatelnΘ prom∞nnΘ:


    Definovßnφ editovateln²ch prom∞nn²ch

    Prvnφ sloupec "Name" urΦuje popis (tj. to co uvidφ animßtor), "Variable" je jmΘno prom∞nnΘ, "Value" je poΦßteΦnφ hodnota a "Type" je typ dat (text, Φφslo, seznam, barva,...).

  • pokud to te∩ nechßme svΘmu osudu, m∞lo by se po kliknutφ na SmartClip zobrazit v okn∞ Properties zhruba toto:


    KoneΦnß podoba v okne "Parameters"

    Zm∞nou parametr∙ a shlΘdnutφm animace p°φkazem "Test Movie" by se m∞ly projevit nastavenΘ hodnoty.



3. Vytvo°enφ specißlnφho UI rozhranφ

P°edchozφ nastavovacφ rozhranφ je podle m∞ velice praktickΘ, ale najdou se i tacφ, kter²m p°ipadß p°φliÜ sterilnφ. Maniak∙m, kte°φ se vy₧φvajφ v k²Φovitostech proto poskytuje Flash mo₧nost vytvo°it si vlastnφ rozhranφ pomocφ samostatnΘ SWF animace, kterß se zobrazφ na mφst∞ klasickΘho rozhranφ.

  • Vytvo°te si tedy novou animaci, jejφ₧ rozm∞ry volte podle klasickΘ velikosti okna rozhranφ.

  • Dßle vytvo°te MovieClip (klidn∞ i prßzdn²), vlo₧te jej do animace a pojmenujte "xch"

    PovÜimn∞te si, ₧e ne°φkßm "t°eba", tento MC se musφ jmenovat xch, jinak to nebude fungovat!

  • VeÜkerΘ prom∞nnΘ adresujete do tohoto MC (xch.paint, xch.xscl, xch.alp, xch.col)

  • V okn∞ "Component Definition" naÜeho p∙vodnφho SmartClipu u kolonky "Custom UI" klepn∞te na "SET" a v okn∞ "Custom UI" vypl≥te polo₧ky podle obrßzku:


    Nastavenφ typu rozhranφ

    Zde mßte na v²b∞r, jestli mß b²t rozhranφ nalinkovßno z vn∞jÜku, nebo z knihovny. (v tomto p°φkladu jsem jej pro nßzornost ponechal vn∞ souboru)

    Dßle je mo₧nΘ urΦit, kde se bude rozhranφ zobrazovat (v Properties nebo ve vlastnφm okn∞)

    Nakonec sprßvn∞ napiÜte cestu k SWF souboru.

  • Takto n∞jak by to mohlo pak vypadat:


    KoneΦnß podoba vlastnφho UI rozhranφ

Nakonec jen uvedu odkaz na strßnku, kde si m∙₧ete stßhnout spoustu hotov²ch komponent∙:
www.flashcomponents.net





ProhlΘdnout
prohlΘdnout


Stßhnout
stßhnout [35 kB] - jen pro MX





Nahoru

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