QuickTipp

BitmapData
csak akkor lesz transparent,
ha a fillColor feketére (0-ra) van állítva:
new BitmapData(w,h,true,0)

FlashHead

Flash - ActionScript programozás, tippek-trükkök.

Friss topikok

Linkblog

Archívum

Függvény callback vagy callback függvény

2010.01.28. 10:40 | halaszlo | Szólj hozzá!

Címkék: függvények

Mindig azt hittem, hogy aki callback függvényt ír az biztosan tud valamit.
Főleg azért, mert nem tudtam mi az.
Pedig nagyon egyszerű:

A függvény callback az, amikor egy függvénynek paraméterül megadjuk, hogy ha végzett, akkor mit indítson el. Persze ez így nem feltétlenül igaz, mert bármikor meg lehet hívni a paraméterként átadott függvényt, nem csak akkor, amikor végzett.
Én leginkább arra használom, amikor valamilyen fájl betöltésére írok egy függvényt és azt szeretném, ha a betöltött fájl további feldolgozására szolgáló függvények addig nem futnának le, amíg a fájl be nem töltődik. Pl.:

//Ezzel hívom meg a betöltő függvényt
loadFile(path, loadComplete);

//Ez pedig a függvény, amit a betöltő függvény fog meghívni betöltés után
function
loadComplete():void 
{
    //Dolgok, amiket a betöltés után el akarok végezni
}

Maga a betöltő függvény, amiben a callback szerepel, így néz ki:
function loadFile(path:String, onComplete:function):void
{
    //Ide kerül a fájl betöltése, majd a callback hívás
    onComplete();
 
}

Természetesen a betötő függvénynek fogalma sincs, hogy mia a neve annak a függénynek, amit majd meg kell hívnia, ezért nem a nevével hivatkozunk rá, hanem  a paraméterrel, amit létrehoztunk erre a célra. (Esetünknben ez az "onComplete").

Függvény tetszőleges paraméterekkel

2010.01.27. 10:41 | halaszlo | Szólj hozzá!

Címkék: függvények

Nagyon hasznos dolog, ha egy függvényünk tetszőleges paraméterekkel rendelkezik. Például egy konstruktor esetében a függvény felhasználója maga döntheti el, hogy ad kezdő paramétereket vagy sem.

Ennek a módja nagyon egyszerű, paraméterként adjunk objektumot a függvénynek:

function freeParamFunc (params:Object):void
{

Vigyázzunk, hogy ilyenkor mindig meg kell vizsgálni használat előtt, hogy kaptunk-e paramétert vagy sem (!= null-al):

function freeParamFunc (params:Object=null):void
{
   if (params != null)     
   {
        if (params.name != null)
        {
            trace(params.name);
        }
        if (params.x != null)
        {
            trace(params.x);
        }
    }

A függvény meghívása a következő módon történhet:

freeParamFunc() //nincs paraméter

freeParamFunc({name:"valami"}) //egy paramétert adunk meg

freeParamFunc({name:"valami", x:30}) //több paramétert adunk meg

freeParamFunc({kuka:30}) //nem létező paramétert adunk meg

Egyik meghívás sem okoz hibát, viszont vigyázni kell, hogy a paramétereket {} közé kell rakni és : -al kell értéket adni. Ez gyakorlatilag az objektum dinamikus létrehozásának felel meg.
Amennyiben olyan paramétert adunk meg, amit a függvény nem dolgoz fel, nem okoz hibát csak nem csinál vele semmit.

Tehát ez a fajta függvény tényleg szabad felhasználást biztosít a paraméterek terén.
Egyetlen hátránya, hogy az editorok nem adnak segítséget a paraméterek megadására kódoláskor.