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.