Skip to content

Commit 96ad0ef

Browse files
authored
Merge pull request kbengine#18 from jay602/master
pause之后 和 resume之前 进行deregister 的话是没有效果的,不会真正注销事件的,resume之后还会触发kbengine/kbengine#859
2 parents b507539 + 3d70f6c commit 96ad0ef

File tree

1 file changed

+57
-16
lines changed

1 file changed

+57
-16
lines changed

kbengine.js

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)