瀏覽代碼

Garbage-less array copy.

Mr.doob 11 年之前
父節點
當前提交
4f42011a5d
共有 1 個文件被更改,包括 23 次插入11 次删除
  1. 23 11
      src/core/EventDispatcher.js

+ 23 - 11
src/core/EventDispatcher.js

@@ -68,27 +68,39 @@ THREE.EventDispatcher.prototype = {
 
 	},
 
-	dispatchEvent: function ( event ) {
+	dispatchEvent: function () {
 
-		if ( this._listeners === undefined ) return;
+		var array = [];
 
-		var listeners = this._listeners;
-		var listenerArray = listeners[ event.type ];
+		return function ( event ) {
+
+			if ( this._listeners === undefined ) return;
+
+			var listeners = this._listeners;
+			var listenerArray = listeners[ event.type ];
+
+			if ( listenerArray !== undefined ) {
 
-		if ( listenerArray !== undefined ) {
+				event.target = this;
 
-			event.target = this;
+				var length = listenerArray.length;
 
-			listenerArray = listenerArray.slice();
+				for ( var i = 0; i < length; i ++ ) {
 
-			for ( var i = 0, l = listenerArray.length; i < l; i ++ ) {
+					array[ i ] = listenerArray[ i ];
 
-				listenerArray[ i ].call( this, event );
+				}
+
+				for ( var i = 0; i < length; i ++ ) {
+
+					array[ i ].call( this, event );
+
+				}
 
 			}
 
-		}
+		};
 
-	}
+	}()
 
 };