5.3.1. A scrollozás
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.