. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .


 
 
SEGÉDLETEK ActionScript

Beépített Tween/Easing osztályok az MX2004-ben
  feltöltve: 2005.03.10 | szerző: savanya | olvasva: 7776 alkalommal

     
 

További paraméterek és függvények

Miután a myTween = new mx.transitions.Tween(...) beírásával létrehoztuk a Tween osztály egy példányát, és alapesetben ezzel egyidejűleg el is indul az animáció, annak futása közben/után további, az osztályhoz tartozó függvényeket hívhatunk meg, amelyekkel befolyásolni tudjuk az animáció működését. A teljesség igénye nélkül (és mert egyik-másik pontos mibenlétéről magam sem tudok sokmindent elmondani) nézzünk meg ezek küzül párat:

start() - újraindítja előlről az animációt, illetve meghívja a Listener objektum onMotionStarted eseménykezelőjét
stop() - leállítja az animációt, illetve meghívja a Listener objektum onMotionStopped eseménykezelőjét
rewind(t) - az animációt a t paraméterben megadott 'kockához' ugratja (ha nem adjuk meg, a default = 0)
fforward() - előreugratja az animációt az utolsó 'kockához'
continueTo(finish, duration) - az animáció aktuális 'kockájától' az eredeti Tweent futtatja le új végértékkel (finish), és új időparaméterrel (duration)
resume() - ha valamilyen okból egy animáció 'félbeszakadt' (pld stop() ), akkor az adott pozícióbol folytatja azt, illetve meghívja a Listener objektum onMotionResumed eseménykezelőjét
yoyo() - felcseréli az mc változó tulajdonságának (prop paraméter) éppen aktuális értékét a 'begin' paraméterben megadottal, majd ezekkel az új adatokkal újraindítja a animációt
getPosition(t) - leolvassa az mc változó tulajdonságának (prop paraméter) az t frame/idő adathoz tartozó értékét (ha t-t nem adjuk, meg akkor az animáció éppen aktuális 'kockájánál' érvényes értéket)
setPosition(p) -

p értékre állítja be az mc változó tulajdonságát (prop paraméter). illetve meghívja a Listener objektum onMotionChaged eseménykezelőjét

(további, az osztályhoz tartozó függvények: nextFrame(), prevFrame(), startEnterFrame(), stopEnterFrame(), toString(). Akit érdekel, hogy mit is csinálnak, utánanézhet a programkönyvtárban a már említett ...Firts Run\Classes\mx\transitions\Tween.as fájlban)

Amint az gondolom mindenkinek feltűnt, egyes függvények a lefutásukkal együtt egy, az aktuális Tween példányhoz esetlegesen rendelt Listener objektumon keresztül (lásd lejjebb a Tween osztály egyéb tulajdonságainál) egy eseménykezelőt is meghívhatnak. Ezek az eseménykezelők lehetnek (elég beszédes a nevük): onMotionChanged, onMotionFinished, onMotionLooped, onMotionStarted, onMotionStopped, onMotionResumed. Érdemes odafigyelni, hogy az egyes eseménykezelőkre milyen, az eredeti animációra visszaható függvényeket hívunk meg, mert könnyen össze is akadhatnak, és végtelen ciklusú folyamatot generálnak, ami ugye nem jó.

A függvények meghívásának módja a szokásos szintaktika szerint:

myTween = new mx.transitions.Tween(...)
myTween.stop()

Néhány vegyes példa a fentiek működésére (kicsit előreugorva a témában, az érzékelhetőbb megjelenés kedvéért az általánosan meghatározott myTween példányban egy easing függvényt is használtam, bővebben lásd az easing osztály résznél):

Minden esetben a Tween példány meghatározása:

function myTweenFunc(){
     myTween = new mx.transitions.Tween(my_mc, "_x", mx.transitions.easing.Regular.easeInOut, 15, 185, 50, false);
}

-

stop(), resume()

start_btn.onRelease = function() {
    myTweenFunc();
};
stop_btn.onRelease = function() {
    myTween.stop(); // leállítja az animot
};
resume_btn.onRelease = function() {
    myTween.resume(); // folytatja az animot
};

-

rewind(), fforward()

start_btn.onRelease = function() {
myTweenFunc();
};
rewind_btn.onRelease = function() {
    
// a 25. 'kockához' (az 50- ből) ugratja az animot
    myTween.rewind(25);
};
fforward_btn.onRelease = function() {
    
// a végére ugratja az animot
    myTween.fforward();
};


-

yoyo(), onMotionFinished

// új Listener
myListener = new Object();
// visszafordítja az animot, ha az lefutott
myListener.onMotionFinished = function() {
    myTween.yoyo();
};
start_btn.onRelease = function() {
    myTweenFunc();
    // Listener hozzárendelése a Tween példányhoz
    myTween.addListener(myListener);
};

-

getPosition(t)

start_btn.onRelease = function() {
    myTweenFunc();
};
getprop_btn.onRelease = function() {
    trace ("_x = "+myTween.getPosition())

};
// Mivel nem adtunk meg t értéket, mindig az aktuális értéket mutatja

A Tween osztály egy példányának létrehozásakor kötelezően megadandó tulajdonságain (emlékeztetőül: obj, prop, func, begin, finish, duration, useSeconds ) kívül vannak további, az osztályhoz tartozó, opcionálisan megadható tulajdonságok (properties) is, amelyekkel a függvényekhez hasonlóan menet közben/után módosíthatjuk az animációnkat, illetve kérdezhetjük le bizonyos jellemzőit. Ezek a következőek:

isPlaying - boolean érték, jelzi, hogy az animáció éppen fut, vagy sem (default = undefined) (olvasható/írható, azaz bármikor megadható, hogy myTween.isPlaying = false, ez azonban magát az animációt nem állítja le, csak ez a tulajdonsága lesz 'false')
addListener - mint azt fentebb már láthattuk, egy Listener objektumot tudonk rendelni a Tween példányunkhoz
removeListener - eltávolítja a Listener objektet
broadcastMessage - egyedi eseménykezelő ("üzenet") a Tween példányhoz tartozó Listener object számára, (inkább nézd meg a példát.... :) )
change - a begin és a finish értékek közti különbség, változtatásával a finish értéke változik, a begin -é marad az eredeti (olvasható/írható)
prevTime - az animáció aktuális 'kocka' előtti frame/idő érték (olvasható/írható)
prevPos - az mc változó tulajdonságának az aktuális 'kocka' előtt helyzeten értelmezett értéke (olvasható/írható)
looping - boolean érték, true esetén az animáció lefutása után újrakezdődik és teszi ezt folyamatosan (default = undefined)

A tulajdonságok lekérdezése, illetve az opcionálisak definiálása a szokásos szintaktika szerint:

myTween = new mx.transitions.Tween(...)
trace (myTween.obj)
myTween.looping = true

Ismét néhány (remélhetőleg érdekesebb) példa ezek használatára:

Továbbra is minden esetben a Tween példány meghatározása:

function myTweenFunc(){
     myTween = new mx.transitions.Tween(my_mc, "_x", mx.transitions.easing.Regular.easeInOut, 15, 185, 50, false);
}

-

obj

start_btn.onRelease = function() {
    myTweenFunc();
};
modify_btn.onRelease = function() {
    // az obj paraméter megváltoztatása
    // az animációt a my_mc2 nevű mc fejezi be
    myTween.obj = my_mc2;
};

-

broadcastMessage

// új Listener
myListener = new Object();

myListener.myOwnEvent = function() {
    trace("valami történt")
};
start_btn.onRelease = function() {
    myTweenFunc();
    myTween.addListener(myListener)
};
modify_btn.onRelease = function() {
    
// az egyedi eseménykezelő megadása
    myTween.broadcastMessage("myOwnEvent");
};

-

change, looping

start_btn.onRelease = function() {
    myTweenFunc();
};
modify_btn.onRelease = function() {
    // a change változtatásával a finish értéke: 115
    myTween.change = 100;
    // folyamatos lejátszás
    myTween.looping = true;
};

Most, hogy nagyjából kezelni tudjuk a Tween osztályt, ugorjunk, és vessünk részletesebb pillantást arra az eddig méltánytalanul nem tárgyalt 'func' paraméterre, hiszen valójában ez fogja csak igazán megbolondítani az animációnkat....

 
     
 
 

© Devnet.hu. A segédletek semmilyen formában nem másolhatók, publikálhatók a Devnet.hu és a szerzők közös írásos engedélye nélkül.
 
. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .