Flash Help
Flash
ActionScript
P°φklady





Webmaster

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


W3C Validita

      HTML 4.0 validnφ




Vlastnφ scrollbar

Ka₧d² asi vφ, na co je scrollbar (Φesky posuvnφk). Ve Flashi MX je mo₧nΘ k textovΘmu poli p°ipojit posuvnφk z UI komponent∙, ale tyto prvky jednak zbyteΦn∞ zv∞tÜujφ velikost animace a navφc pokud je chcete zobrazit ve FlashPlayeru 5 jednoduÜe ostrouhßte.

My se nauΦφme vytvo°it posuvnφk, kter² bude um∞t posouvat nejen obsah textovΘho pole, ale takΘ nap°φklad m∞nit pozici instance MovieClipu.


1. Posuvnφk textovΘho pole

Jist∞ vφte, ₧e textovΘ pole typu "Dynamic" a "Input text" zobrazuje hodnotu definovanΘ prom∞nnΘ. K tΘto funkci se vztahujφ 2 p°φkazy, kterΘ nynφ vyu₧ijeme:

  nazevpromenne.scroll
  nazevpromenne.maxscroll

Prvnφ jmenovan² prvek vyjad°uje aktußlnφ Φφslo °ßdku, kterΘ je zobrazenΘ naho°e (tuto hodnotu lze zm∞nit a tφm vlastn∞ text posunout) a druh² vyjad°uje op∞t Φφslo nejvyÜÜφho °ßdku, ale v p°φpad∞, ₧e ji₧ je vid∞t poslednφ °ßdek (v podstat∞ je to poΦet skryt²ch °ßdk∙). Tato hodnota p°irozen∞ nelze m∞nit.

Jen dodßm, ₧e textovΘ pole musφ b²t typu multiline a text musφ p°esahovat, jinak by byly p°edchozφ p°φkazy bezp°edm∞tnΘ.


  • Tak₧e nejprve vytvo°te multiline dynamic text na ploÜe a definujte mu nap°. prom∞nnou "text" a nßsledn∞ do prvnφho snφmku definujte tyto p°φkazy:

      text = "dost dlouh² text.....";
      length = 143;
    

    - prom∞nnß "length" bude vyjad°ovat v²Üku scrollbaru (m∙₧ete ji zm∞nit podle pot°eby) - viz dßle

  • Nßsledn∞ vytvo°te 3 tlaΦφtka (Üφpka nahoru, posuvnφk, Üipka dol∙) - v podstat∞ staΦφ 2 (Üipky jsou stejnΘ - jen otoΦenΘ)

  • Do t°etice vytvo°te movie clip a do n∞j Üoupn∞te tlaΦφtko posuvnφku. Tomuto tlaΦφtku (tedy nikoliv movie clipu) 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;
    }
    

    Funkce "StartDrag" zahßjφ ta₧enφ movie clipu "scroller". Posun je vÜak omezen 4 rozm∞ry (v naÜem p°φpad∞ prom∞nnΘ left, right, top a bottom)

    Zßrove≥ je po uchopenφ definovßna prom∞nnß "dragging" jako pravda (po puÜt∞nφ jako nepravda)

  • Nynφ umφst∞te MovieClip s tlaΦφtkem na plochu, pojmenujte jej "scroller" a definujte mu tyto p°φkazy:

    onClipEvent (load) {
        _root.koeficient = _root.length/(_root.text.maxscroll + 1);
        _root.top = _y;
        _root.left = _x;
        _root.right = _x;
        _root.bottom = _y+_root.length;
    }
    
    onClipEvent (enterFrame) {
         if (_root.dragging == true) {
                 _root.text.scroll = Math.floor((_y - _root.top)/_root.koeficient);
         }
    }
    

    Po naΦtenφ MC "scroller" se vypoΦφtß p°evodnφ koeficient (podle dΘlky textu) jako podφl v²Üky celΘho scrollbaru a poΦtu skryt²ch °ßdk∙.

    Dßle jsou definovßny prom∞nnΘ vymezujφcφ posuv scrolleru tak aby byl mo₧n² posuv pouze po ose y na ·seΦce dlouhΘ v naÜem p°φpad∞ 143 px

    Po uchopenφ scrolleru se potom vypoΦφtß prom∞nnß text.scroll jako zaokrouhlenß hodnota podφlu odjetΘ vzdßlenosti od hornφ hranice posuvnφku a koeficientu.


    Vysv∞tlenφ pou₧it²ch sou°adnic
  • DalÜφ v po°adφ jsou Üipky:
    Hornφ definujte tyto p°φkazy:

    on (release, keyPress "<Up>") {
        _root.text.scroll--;
    
        if (_root.scroller._y-_root.koeficient>_root.top) {
                     _root.scroller._y -= _root.koeficient;
        } else {
                     _root.scroller._y = _root.top;
        }
    }
    

    Po kliknutφ (nebo Üipka nahoru) odeΦte od prom∞nnΘ text.scroll jedniΦku (tj. posune text sm∞rem dol∙)
    Dßle pokud by nebyla p°ekroΦena hornφ hranice, posune scroller o hodnotu koeficientu nahoru, pokud ano nastavφ scroller na hornφ hranici.

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

    on (release, keyPress "<Down>") {
        _root.text.scroll++;
    
        if (_root.scroller._y + _root.koeficient < _root.bottom) {
                  _root.scroller._y += _root.koeficient;
        } else {
                  _root.scroller._y = _root.bottom;
        }
    }
    
  • Jako poslednφ krok jeÜt∞ m∙₧ete dod∞lat design okna a je hotovo.


ProhlΘdnout
prohlΘdnout


Stßhnout
stßhnout [6 kB]






Nahoru

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