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.