Hi Leute, das hat mir und Carsten Müller keine Ruhe gelassen, wir haben jetzt ein interessantes Ergebniss: - On-broadcastMessage-Listener-Remove-Bug ist behoben. - Die broadcastMessage-Geschwindigkeit ist identisch. - Das Entfernen von Listenern beim senden geht über 40mal schneller. Testet das doch mal bitte, vielleicht sind wir ja auch irgendwie blind...:-) Besonders dritte Punkt ist interessant, scheint wohl an der internen Speicherwaltung zu liegen, so nach dem Motto - wenn Flash monotonere Arbeiten macht kommt es so richtig in fahrt. netten Gruß, Holger <code> o = ASBroadcaster; o.oldAddListener = o.addListener; o.oldRemoveListener = o.removeListener; o.oldBroadcastMessage = o.broadcastMessage; // o.initialize = function (pObj) { pObj.oldAddListener = this.oldAddListener; pObj.oldRemoveListener = this.oldRemoveListener; pObj.oldBroadcastMessage = this.oldBroadcastMessage; pObj.addListener = this.addListener; pObj.removeListener = this.removeListener; pObj.broadcastMessage = this.broadcastMessage; pObj._listeners = new Array(); pObj.__blnSending = false; pObj.__arrObjectsToRemove = new Array(); } // o.addListener = function (pObj) { var tmp = this._blnSending; this._blnSending = false; this.oldAddListener(pObj); this._blnSending = tmp; } // o.removeListener = function (pObj) { if (this._blnSending == false) this.oldRemoveListener(pObj); else this._arrObjectsToRemove.push(pObj); } // o.broadcastMessage = function () { this.__blnSending = true; this.oldBroadcastMessage.apply(this, arguments); this.__blnSending = false; var l = this.__arrObjectsToRemove.length; for (var i = 0; i < l; i++) this.oldRemoveListener(this._arrObjectsToRemove[i]); this._arrObjectsToRemove.splice(0); } </code> ------------------------------------------------------ Archiv : //www.freelists.org/archives/ascoders/ Optionen : //www.freelists.org/list/ascoders ------------------------------------------------------