@@ -287,8 +287,9 @@ KBEngine.EventInfo = function(classinst, callbackfn)
287287 this . classinst = classinst ;
288288}
289289
290- KBEngine . EventObj = function ( evtInfo , ars )
290+ KBEngine . EventObj = function ( evtName , evtInfo , ars )
291291{
292+ this . evtName = evtName ;
292293 this . evtInfo = evtInfo ;
293294 this . ars = ars ;
294295}
@@ -318,29 +319,69 @@ KBEngine.Event = function()
318319 var info = new KBEngine . EventInfo ( classinst , callbackfn ) ;
319320 evtlst . push ( info ) ;
320321 }
322+
323+ this . deregisterAll = function ( classinst )
324+ {
325+ for ( var itemkey in this . _events )
326+ {
327+ this . deregister ( itemkey , classinst ) ;
328+ }
329+ }
321330
322331 this . deregister = function ( evtName , classinst )
323332 {
324- for ( var itemkey in this . _events )
333+ var evtlst = this . _events [ evtName ] ;
334+
335+ if ( evtlst == undefined )
325336 {
326- var evtlst = this . _events [ itemkey ] ;
327- while ( true )
337+ return ;
338+ }
339+
340+ while ( true )
341+ {
342+ var found = false ;
343+ for ( var i = 0 ; i < evtlst . length ; i ++ )
328344 {
329- var found = false ;
330- for ( var i = 0 ; i < evtlst . length ; i ++ )
345+ var info = evtlst [ i ] ;
346+ if ( info . classinst == classinst )
331347 {
332- var info = evtlst [ i ] ;
333- if ( info . classinst == classinst )
334- {
335- evtlst . splice ( i , 1 ) ;
336- found = true ;
337- break ;
338- }
348+ evtlst . splice ( i , 1 ) ;
349+ found = true ;
350+ break ;
339351 }
340-
341- if ( ! found )
352+ }
353+
354+ if ( ! found )
355+ break ;
356+ }
357+
358+ this . removeFiredEvent ( evtName , classinst ) ;
359+ }
360+
361+ this . removeAllFiredEvent = function ( classinst )
362+ {
363+ this . removeFiredEvent ( "" , classinst ) ;
364+ }
365+
366+ this . removeFiredEvent = function ( evtName , classinst )
367+ {
368+ var fireEvents = this . _fireEvents ;
369+ while ( true )
370+ {
371+ var found = false ;
372+ for ( var i = 0 ; i < fireEvents . length ; i ++ )
373+ {
374+ var evt = fireEvents [ i ] ;
375+ if ( ( evtName == "" || evt . evtName == evtName ) && evt . evtInfo . classinst == classinst )
376+ {
377+ fireEvents . splice ( i , 1 ) ;
378+ found = true ;
342379 break ;
380+ }
343381 }
382+
383+ if ( ! found )
384+ break ;
344385 }
345386 }
346387
@@ -381,7 +422,7 @@ KBEngine.Event = function()
381422 }
382423 else
383424 {
384- var eobj = new KBEngine . EventObj ( info , ars ) ;
425+ var eobj = new KBEngine . EventObj ( evtName , info , ars ) ;
385426 this . _fireEvents . push ( eobj ) ;
386427 }
387428 }
0 commit comments