Anyone good at custom Event?

this is a custom class that loads the fonts.

ActionScript Code:
[LEFT]<[LEFT][COLOR=#808080]*//FontLoader.as*[/COLOR]

package won.[COLOR=#0000FF]text[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]events[/COLOR].;
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]net[/COLOR].
;
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]display[/COLOR].*;

[COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**class**[/COLOR] FontLoader
[COLOR=#000000]{[/COLOR]
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] i:[COLOR=#0000FF]int[/COLOR];
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] l:[COLOR=#0000FF]Array[/COLOR];
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] c:[COLOR=#000000]**Function**[/COLOR];            
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] p:[COLOR=#0000FF]Number[/COLOR] = [COLOR=#000080]0[/COLOR]; 
    
    [COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**function**[/COLOR] FontLoader[COLOR=#000000]([/COLOR]$list:[COLOR=#0000FF]Array[/COLOR], $param:[COLOR=#0000FF]Object[/COLOR][COLOR=#000000])[/COLOR]
    [COLOR=#000000]{[/COLOR]
        i=-[COLOR=#000080]1[/COLOR];
        l=$list;
        c = [COLOR=#000000]([/COLOR]$param.[COLOR=#000080]onComplete[/COLOR][COLOR=#000000])[/COLOR] ? $param.[COLOR=#000080]onComplete[/COLOR] : [COLOR=#000000]**function**[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR][COLOR=#000000]{[/COLOR][COLOR=#000000]}[/COLOR];                            
    [COLOR=#000000]}[/COLOR]
    
    [COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**function**[/COLOR] [COLOR=#0000FF]load[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
    [COLOR=#000000]{[/COLOR]
        loadFont[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
    [COLOR=#000000]}[/COLOR]
    
    [COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**function**[/COLOR] [COLOR=#0000FF]get[/COLOR] percent[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR]:[COLOR=#0000FF]Number[/COLOR]
    [COLOR=#000000]{[/COLOR]
        [COLOR=#0000FF]return[/COLOR] p;
    [COLOR=#000000]}[/COLOR]
                    
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] loadFont[COLOR=#000000]([/COLOR][COLOR=#0000FF]e[/COLOR]:Event=[COLOR=#000000]**null**[/COLOR][COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
    [COLOR=#000000]{[/COLOR]
        i++;
        [COLOR=#000000]([/COLOR]i>l.[COLOR=#000080]length[/COLOR]-[COLOR=#000080]1[/COLOR][COLOR=#000000])[/COLOR] ? exit[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR] : process[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
    [COLOR=#000000]}[/COLOR]
    
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] process[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
    [COLOR=#000000]{[/COLOR]            
        [COLOR=#000000]**var**[/COLOR] loader:Loader = [COLOR=#000000]**new**[/COLOR] Loader[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];            
        loader.[COLOR=#000080]contentLoaderInfo[/COLOR].[COLOR=#000080]addEventListener[/COLOR][COLOR=#000000]([/COLOR]ProgressEvent.[COLOR=#000080]PROGRESS[/COLOR], calculateProgress[COLOR=#000000])[/COLOR];
        loader.[COLOR=#000080]contentLoaderInfo[/COLOR].[COLOR=#000080]addEventListener[/COLOR][COLOR=#000000]([/COLOR]Event.[COLOR=#000080]COMPLETE[/COLOR], loadFont[COLOR=#000000])[/COLOR];
        loader.[COLOR=#0000FF]load[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000000]**new**[/COLOR] URLRequest[COLOR=#000000]([/COLOR]l[COLOR=#000000][[/COLOR]i[COLOR=#000000]][/COLOR][COLOR=#000000])[/COLOR][COLOR=#000000])[/COLOR];                    
    [COLOR=#000000]}[/COLOR]
    
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] calculateProgress[COLOR=#000000]([/COLOR][COLOR=#0000FF]e[/COLOR]:ProgressEvent[COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
    [COLOR=#000000]{[/COLOR]            
        p = [COLOR=#000000]([/COLOR]i/l.[COLOR=#0000FF]length[/COLOR][COLOR=#000000])[/COLOR] + [COLOR=#000000]([/COLOR][COLOR=#000000]([/COLOR][COLOR=#0000FF]e[/COLOR].[COLOR=#0000FF]bytesLoaded[/COLOR]/[COLOR=#0000FF]e[/COLOR].[COLOR=#0000FF]bytesTotal[/COLOR][COLOR=#000000])[/COLOR]/l.[COLOR=#0000FF]length[/COLOR][COLOR=#000000])[/COLOR];
    [COLOR=#000000]}[/COLOR]
    
    [COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] exit[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
    [COLOR=#000000]{[/COLOR]
        c[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
    [COLOR=#000000]}[/COLOR]    
[COLOR=#000000]}[/COLOR]

[COLOR=#000000]}[/COLOR]
[/LEFT]

[/LEFT]

How do i add “addEventListener” to this custom class?
i want to add Two addEventListener,

  1. when the 'calculateProgress is function is modifying ‘p’ property, i want the flash document to get that number for each update.

  2. when the loading is complete, i want to trigger the oncomplete function. i did this by passing the function to the object parameter, but i would like to use addEventListener.
    here the following code is the way i achieved this.

    ActionScript Code:
    [LEFT][LEFT][COLOR=#808080]//Flash Document[/COLOR]
    [COLOR=#0000FF]import[/COLOR] won.[COLOR=#0000FF]text[/COLOR].*;

[COLOR=#000000]var[/COLOR] [COLOR=#0000FF]list[/COLOR]:[COLOR=#0000FF]Array[/COLOR] = [COLOR=#000000][[/COLOR][COLOR=#FF0000]“pastelar.swf”[/COLOR],[COLOR=#FF0000]“frankGothicBook.swf”[/COLOR][COLOR=#000000]][/COLOR];
[COLOR=#000000]var[/COLOR] loader:FontLoader = [COLOR=#000000]new[/COLOR] FontLoader[COLOR=#000000]([/COLOR][COLOR=#0000FF]list[/COLOR], [COLOR=#000000]{[/COLOR]onComplete:done[COLOR=#000000]}[/COLOR][COLOR=#000000])[/COLOR];
loader.[COLOR=#0000FF]load[/COLOR]COLOR=#000000[/COLOR];

addEventListener[COLOR=#000000]([/COLOR]Event.[COLOR=#000080]ENTER_FRAME[/COLOR], loop[COLOR=#000000])[/COLOR];
[COLOR=#000000]function[/COLOR] loopCOLOR=#000000[/COLOR]:[COLOR=#0000FF]void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR]COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]

[COLOR=#000000]function[/COLOR] doneCOLOR=#000000[/COLOR]:[COLOR=#0000FF]void[/COLOR][COLOR=#000000]{[/COLOR]
removeEventListener[COLOR=#000000]([/COLOR]Event.[COLOR=#000080]ENTER_FRAME[/COLOR], loop[COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[/LEFT]

[/LEFT]

but instead doing that, i wanna be able to this.
ActionScript Code:
ActionScript Code:
[LEFT][LEFT][COLOR=#0000FF]import[/COLOR] won.[COLOR=#0000FF]text[/COLOR].*;

[COLOR=#000000]var[/COLOR] [COLOR=#0000FF]list[/COLOR]:[COLOR=#0000FF]Array[/COLOR] = [COLOR=#000000][[/COLOR][COLOR=#FF0000]“pastelar.swf”[/COLOR],[COLOR=#FF0000]“frankGothicBook.swf”[/COLOR][COLOR=#000000]][/COLOR];
[COLOR=#000000]var[/COLOR] loader:FontLoader = [COLOR=#000000]new[/COLOR] FontLoaderCOLOR=#000000[/COLOR];
loader.[COLOR=#000080]addEventListener[/COLOR][COLOR=#000000]([/COLOR]FontLoaderEvent.[COLOR=#000080]PROGRESS[/COLOR], displayPercentLoaded[COLOR=#000000])[/COLOR];
loader.[COLOR=#000080]addEventListener[/COLOR][COLOR=#000000]([/COLOR]FontLoaderEvent.[COLOR=#000080]COMPLETE[/COLOR], init[COLOR=#000000])[/COLOR];
loader.[COLOR=#0000FF]load[/COLOR]COLOR=#000000[/COLOR];

[COLOR=#000000]function[/COLOR] COLOR=#000000[/COLOR]:[COLOR=#0000FF]void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR]COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]

[COLOR=#000000]function[/COLOR] initCOLOR=#000000[/COLOR]:[COLOR=#0000FF]void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR]COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]
[/LEFT]

[/LEFT]

i tried to search online, read books, etc for custom events, but
it was hard to grasp the concept.
can someone please help?