5.3.1. A scrollozás

iDevice ikon
A szkrollozás funkció szkriptje a következő:

 

először a scoll_btn-ra írd ezt az action-t:

on (press) {
    startDrag("scroll_btn", false, xpos, ypos1, xpos, ypos2);
    cscr();
}
on (release, releaseOutside) {
    stopDrag();
    del();
}


Ez beállítja, hogy mekkora négyzetben draggelhetjük, illetve a dragelés kezdetekor meghívja a cscr fv.-t. A gomb felengedésekor pedig lefut a del fv. és a dragelés is abbamarad. Innen tartsd fejben a cscr és a del fv.-eket és a startDrag-ben megadott változókat, hogy könnyebben követni tudd a következő kódrészt.

//SCROLL FV.-EK
scrollOptimizer = function () {
    // alap helyzet visszaállítasa
    xpos = scroll_btn._x;
    ypos = scroll_btn._y = 66;
    msc = txt_main.maxscroll;
    if (msc<=2) {
        scroll_btn.enabled = 0;
        ypos1 = 62;
        ypos2 = 62;
    } else {
        scroll_btn.enabled = 1;
        ypos1 = 62;
        ypos2 = 260;
    }
    bcscr();
};


A scrollOptimizer fv. tehát mint feljebb láttuk akkor hívódik meg mikor a builder fv. lefutott. Tehát mindig amikor új hírt töltünk a szövegdobozokba. Ekkor ennek (scrollOptimizer) meg kell néznie, hogy a szöveg scrollozható-e, vagy nem mert olyan pici. Ekkor le kell tiltani a scroll_btn-t. Éppenséggel ha nem a hatter_mc-ben lenne a scroll alapvonala, hanem egy külön mc-ben kint a színpadon, akkor még el is tüntethetnénk ilyenkor az egész scroll "berendezésünket". Ha scrollozni kell, akkor az ypos1 és az ypos2 változókkal megadja hogy a startDrag lefutásakor milyen korlátok közt mozgatható a gombunk/csúszkánk. Ezután meghívja a bcscr fv.-t ami már következik is:)

function bcscr() {
maxa = ypos2-ypos1;
scs = (Math.abs(ypos-scroll_btn._y)/maxa)*msc;
txt_main.scroll = scs;
}


Itt a maxa változóban eltároljuk az ypos1 és az ypos2 távolságát, vagyis a csúszkának csúszható utat:) Majd kiszámoljuk az scs változóban, azt hogy az út hány százalékánál jár a gombunk. Ez tegyük fel 0.52, tehát madjnem középen van. Így megszorozzuk a textBox-unknak a maxScroll értékét ennyivel és ezt állítjuk be az aktuális scroll értéknek. Ha pixelfonttal csináljátok ezt a hírpanelt, akkor annak fontos lesz, hogy egész pixelen legyen.

//csúszó gomb
function cscr() {
this.onEnterFrame = bcscr;
}
//törlés
function del() {
delete this.onEnterFrame;
}


Majd itt jön a cscr fv., melyet egyszer hívunk meg a startDrag lefutásakor. Ez a fv. az onEnterFrame eseménykezelőhöz hozzárendeli az előbb tárgyalt bcscr fv.-t így az minden frame-ben lefut, egészen addig, amíg a gombot fel nem engedjük, ekkor ugyanis a del fv. meghívásával törlődik cscr-re mutató hivatkozás. (A lényeg hogy nem fut le minden frame-ben a továbbiakban:))

//FV-HÍVÁSOK
builder(hirCounter);
trackControl1.apply(elore_btn);
trackControl2.apply(hatra_btn);


Itt a végén pedig meghívjuk a builder fv.-ünket egyszer. Innentől már a gombok fogják hívogatni. A gombok esetében le kell tiltani a hátra gombot biztosan, hiszen mi a builder fv-t az első (emlékezz a nulladik) elemmel hívjuk meg, tehát nincs hátralépés. De nem lehetünk elég óvatosak:), mivan ha csak egy hírt adtunk az XML-hez. Akkor előre menetet is sztornó. Így lefuttatjuk mindkét trackControl-t és ezzel a hírblokkunk működőképes.