Flash Help
Flash
ActionScript
P°φklady





Webmaster

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


W3C Validita

      HTML 4.0 validnφ




Movie Clip scrollbar

V minulΘm dφle jsme se bavili o vytvß°enφ textovΘho posuvnφku. Vyu₧φvali jsme vlastnosti prom∞nnΘ scroll a maxscroll. Takto lze vÜak lze scrollovat pouze Φist² text a my chceme posouvat t°eba i obrßzky. Jeliko₧ do textovΘho pole nelze nacpat grafiku, budeme muset pou₧φt MovieClip. Podobn∞ jako v p°edchozφm p°φpad∞, i zde je mo₧nΘ pou₧φt ji₧ hotov² UI Komponent (ScrollPane), ale op∞t dojde k nep°φjemnΘmu zv∞tÜenφ animace a jejφ nekompatibilit∞ v p°ehrßvaΦφch 5 a ni₧Üφch.


  • Tak₧e nejprve si musφte vytvo°it MovieClip, kter² bude tvo°it obsah scrollovanΘho okna. Zde se fantazii meze nekladou (m∙₧e obsahovat prakticky cokoliv - i pohyblivou grafiku)

  • Tento MC vlo₧te na plochu a pojmenujte jej (t°eba "window")

  • Tomuto MC je nutnΘ definovat nßsledujφcφ p°φkazy:

    onClipEvent (load) {
            _root.nullpos = _y;
    }
    

    Tento zßpis znamenß, ₧e po naΦtenφ se nastavφ hodnota prom∞nnΘ nullpos jako Y sou°adnice tohoto MC.


  • PoslΘze si v knihovn∞ vytvo°te 3 tlaΦφtka (Üipka nahoru resp. dol∙ a vlastnφ scroller)

  • Vytvo°te dalÜφ MovieClip, do kterΘho importujete instanci tlaΦφtka scrolleru a celΘ to vlo₧te na plochu a nazv∞te t°eba "scroller"

  • Dßle vlo₧te na plochu instance Üipek nahoru a dol∙
  • Do prvnφho snφmku animace nynφ definujte tuto prom∞nnou:

    length = 143;

    Tato prom∞nnß charakterizuje v²Üku scrollbaru (rozdφl mezi hornφ a dolnφ pozicφ v pixelech) Tuto hodnotu p°izp∙sobφte velikosti vaÜeho okna.

  • Nynφ vyberte instanci MC "scroller" a definujte jφ tyto p°φkazy:

    onClipEvent (load) {
          _root.koeficient = _root.length/(_root.window._height - _root.length - 1.5*_height);
          _root.top = _y;
          _root.left = _x;
          _root.right = _x;
          _root.bottom = _y+_root.length;
    }
    
    onClipEvent (enterFrame) {
          if (_root.dragging == true) {
                  _root.window._y = _root.nullpos - (_y - _root.top)/_root.koeficient;
          }
    }
    

    Tento zßpis znamenß, ₧e po naΦtenφ (load) se definuje hodnota prom∞nnΘ "koeficient" jako podφl v²Üky scrollbaru (definovanß v prvnφm snφmku) a v²Ükou MC "window" od kterΘ je odeΦtena jeÜt∞ v²Üka scrollbaru (lenght) a v²Üka scrolleru (instance "scroller")

    Dßle jsou definovßny 4 prom∞nnΘ (top, left, right a bottom), kterΘ potΘ budou vymezovat pohyb scrolleru

    Dßle po udßlosti "EnterFrame" a pokud je prom∞nnß dragging = true vypoΦφtßna pozice posouvanΘho MC "window" jako poΦßteΦnφ pozice posouvanΘho MC mφnus vzdßlenost scrolleru od svΘ maximßlnφ hornφ pozice (top) pod∞lenß koeficientem.



    Vysv∞tlenφ pou₧it²ch sou°adnic

  • Nynφ si v knihovn∞ otev°ete MC "scroller" a v n∞m umφst∞nΘmu tlaΦφtku definujte tyto p°φkazy:

    on (press) {
         startDrag("_root.scroller", false, _root.left, _root.top, _root.right, _root.bottom);
         _root.dragging = true;
    }
    on (release, releaseOutside) {
         stopDrag();
         _root.dragging = false;
    }
    

    Zde je napsßno, ₧e po kliknutφ na tlaΦφtko zaΦφnß ta₧enφ MC "window", kterΘ je vÜak limitovßno 4 rozm∞ry (v naÜem p°φpad∞ jsou mφsto nich prom∞nnΘ left, right, bottom a top). Dßle se nastavφ hodnota prom∞nnΘ dragging jako pravda (true).

    Po puÜt∞nφ tlaΦφtka se ta₧enφ ukonΦφ a dragging se nastavφ jako false.

  • Nakonec zprovoznφme Üipky nahoru a dol∙. Hornφ Üipce definujeme tyto p°φkazy:

    on (release, keyPress "<Up>") {
         if (_root.scroller._y-10*_root.koeficient>_root.top) {
                   _root.scroller._y -= 10*_root.koeficient;
                   _root.window._y += 10;
         } else {
                   _root.scroller._y = _root.top;
         }
    }
    

    Toto znamenß, ₧e po kliknutφ nebo po stisknutφ Üipky nahoru se scroller posune o desetinßsobek koeficientu nahoru a okno se posune o deset pixel∙ dol∙, ale pouze v p°φpad∞, ₧e by se tφmto posunem nedostal scroller mimo svou drßhu (nad pozici top).
    Pokud ano z∙stane scroller ve svΘ hornφ pozici a Ümitec.

  • Dolnφ Üipka funguje p°esn∞ opaΦn∞:

    on (release, keyPress "<Down>") {
           if (_root.scroller._y+10*_root.koeficient<_root.bottom) {
                 _root.scroller._y += 10*_root.koeficient;
                 _root.window._y -= 10;
           } else {
                 _root.scroller._y = _root.bottom;
           }
    }
    
  • ┌pln∞ nakonec jeÜt∞ m∙₧ete dod∞lat design drßhy scrolleru a p°idat masku pro okno.



ProhlΘdnout
prohlΘdnout


Stßhnout
stßhnout [7 kB]






Nahoru

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