提交 f908a124 编写于 作者: M Mr.doob

Merge pull request #6943 from dubejf/controls-dispose

Add dispose method to all controls
...@@ -88,6 +88,12 @@ THREE.DeviceOrientationControls = function ( object ) { ...@@ -88,6 +88,12 @@ THREE.DeviceOrientationControls = function ( object ) {
}; };
this.dispose = function () {
this.disconnect();
};
this.connect(); this.connect();
}; };
...@@ -96,6 +96,12 @@ THREE.DragControls = function( _camera, _objects, _domElement ) { ...@@ -96,6 +96,12 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
}; };
this.dispose = function() {
me.deactivate();
};
this.activate(); this.activate();
function onDocumentMouseMove( event ) { function onDocumentMouseMove( event ) {
......
...@@ -203,11 +203,30 @@ THREE.EditorControls = function ( object, domElement ) { ...@@ -203,11 +203,30 @@ THREE.EditorControls = function ( object, domElement ) {
} }
domElement.addEventListener( 'contextmenu', function ( event ) { function contextmenu( event ) {
event.preventDefault(); event.preventDefault();
}, false ); }
this.dispose = function() {
domElement.removeEventListener( 'contextmenu', contextmenu, false );
domElement.removeEventListener( 'mousedown', onMouseDown, false );
domElement.removeEventListener( 'mousewheel', onMouseWheel, false );
domElement.removeEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox
domElement.removeEventListener( 'mousemove', onMouseMove, false );
domElement.removeEventListener( 'mouseup', onMouseUp, false );
domElement.removeEventListener( 'mouseout', onMouseUp, false );
domElement.removeEventListener( 'dblclick', onMouseUp, false );
domElement.removeEventListener( 'touchstart', touchStart, false );
domElement.removeEventListener( 'touchmove', touchMove, false );
}
domElement.addEventListener( 'contextmenu', contextmenu, false );
domElement.addEventListener( 'mousedown', onMouseDown, false ); domElement.addEventListener( 'mousedown', onMouseDown, false );
domElement.addEventListener( 'mousewheel', onMouseWheel, false ); domElement.addEventListener( 'mousewheel', onMouseWheel, false );
domElement.addEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox domElement.addEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox
......
...@@ -253,19 +253,37 @@ THREE.FirstPersonControls = function ( object, domElement ) { ...@@ -253,19 +253,37 @@ THREE.FirstPersonControls = function ( object, domElement ) {
}; };
function contextmenu( event ) {
this.domElement.addEventListener( 'contextmenu', function ( event ) {
event.preventDefault(); event.preventDefault();
}, false ); }
this.dispose = function() {
this.domElement.removeEventListener( 'contextmenu', contextmenu, false );
this.domElement.removeEventListener( 'mousedown', _onMouseDown, false );
this.domElement.removeEventListener( 'mousemove', _onMouseMove, false );
this.domElement.removeEventListener( 'mouseup', _onMouseUp, false );
window.removeEventListener( 'keydown', _onKeyDown, false );
window.removeEventListener( 'keyup', _onKeyUp, false );
}
var _onMouseMove = bind( this, this.onMouseMove );
var _onMouseDown = bind( this, this.onMouseDown );
var _onMouseUp = bind( this, this.onMouseUp );
var _onKeyDown = bind( this, this.onKeyDown );
var _onKeyUp = bind( this, this.onKeyUp );
this.domElement.addEventListener( 'mousemove', bind( this, this.onMouseMove ), false ); this.domElement.addEventListener( 'contextmenu', contextmenu, false );
this.domElement.addEventListener( 'mousedown', bind( this, this.onMouseDown ), false ); this.domElement.addEventListener( 'mousemove', _onMouseMove, false );
this.domElement.addEventListener( 'mouseup', bind( this, this.onMouseUp ), false ); this.domElement.addEventListener( 'mousedown', _onMouseDown, false );
this.domElement.addEventListener( 'mouseup', _onMouseUp, false );
window.addEventListener( 'keydown', bind( this, this.onKeyDown ), false ); window.addEventListener( 'keydown', _onKeyDown, false );
window.addEventListener( 'keyup', bind( this, this.onKeyUp ), false ); window.addEventListener( 'keyup', _onKeyUp, false );
function bind( scope, fn ) { function bind( scope, fn ) {
......
...@@ -254,18 +254,38 @@ THREE.FlyControls = function ( object, domElement ) { ...@@ -254,18 +254,38 @@ THREE.FlyControls = function ( object, domElement ) {
} }
this.domElement.addEventListener( 'contextmenu', function ( event ) { function contextmenu( event ) {
event.preventDefault(); event.preventDefault();
}, false ); }
this.dispose = function() {
this.domElement.removeEventListener( 'contextmenu', contextmenu, false );
this.domElement.removeEventListener( 'mousedown', _mousedown, false );
this.domElement.removeEventListener( 'mousemove', _mousemove, false );
this.domElement.removeEventListener( 'mouseup', _mouseup, false );
window.removeEventListener( 'keydown', _keydown, false );
window.removeEventListener( 'keyup', _keyup, false );
}
var _mousemove = bind( this, this.mousemove );
var _mousedown = bind( this, this.mousedown );
var _mouseup = bind( this, this.mouseup );
var _keydown = bind( this, this.keydown );
var _keyup = bind( this, this.keyup );
this.domElement.addEventListener( 'contextmenu', contextmenu, false );
this.domElement.addEventListener( 'mousemove', bind( this, this.mousemove ), false ); this.domElement.addEventListener( 'mousemove', _mousemove, false );
this.domElement.addEventListener( 'mousedown', bind( this, this.mousedown ), false ); this.domElement.addEventListener( 'mousedown', _mousedown, false );
this.domElement.addEventListener( 'mouseup', bind( this, this.mouseup ), false ); this.domElement.addEventListener( 'mouseup', _mouseup, false );
window.addEventListener( 'keydown', bind( this, this.keydown ), false ); window.addEventListener( 'keydown', _keydown, false );
window.addEventListener( 'keyup', bind( this, this.keyup ), false ); window.addEventListener( 'keyup', _keyup, false );
this.updateMovementVector(); this.updateMovementVector();
this.updateRotationVector(); this.updateRotationVector();
......
...@@ -50,6 +50,12 @@ THREE.MouseControls = function ( object ) { ...@@ -50,6 +50,12 @@ THREE.MouseControls = function ( object ) {
}; };
this.dispose = function() {
document.removeEventListener( 'mousemove', onMouseMove, false );
}
document.addEventListener( 'mousemove', onMouseMove, false ); document.addEventListener( 'mousemove', onMouseMove, false );
}; };
...@@ -750,11 +750,31 @@ ...@@ -750,11 +750,31 @@
} }
this.domElement.addEventListener( 'contextmenu', function ( event ) { function contextmenu( event ) {
event.preventDefault(); event.preventDefault();
}, false ); }
this.dispose = function() {
this.domElement.removeEventListener( 'contextmenu', contextmenu, false );
this.domElement.removeEventListener( 'mousedown', onMouseDown, false );
this.domElement.removeEventListener( 'mousewheel', onMouseWheel, false );
this.domElement.removeEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox
this.domElement.removeEventListener( 'touchstart', touchstart, false );
this.domElement.removeEventListener( 'touchend', touchend, false );
this.domElement.removeEventListener( 'touchmove', touchmove, false );
document.removeEventListener( 'mousemove', onMouseMove, false );
document.removeEventListener( 'mouseup', onMouseUp, false );
window.removeEventListener( 'keydown', onKeyDown, false );
}
this.domElement.addEventListener( 'contextmenu', contextmenu, false );
this.domElement.addEventListener( 'mousedown', onMouseDown, false ); this.domElement.addEventListener( 'mousedown', onMouseDown, false );
this.domElement.addEventListener( 'mousewheel', onMouseWheel, false ); this.domElement.addEventListener( 'mousewheel', onMouseWheel, false );
......
...@@ -606,14 +606,34 @@ THREE.OrthographicTrackballControls = function ( object, domElement ) { ...@@ -606,14 +606,34 @@ THREE.OrthographicTrackballControls = function ( object, domElement ) {
} }
this.domElement.addEventListener( 'contextmenu', function ( event ) { function contextmenu( event ) {
event.preventDefault(); event.preventDefault();
}, false ); }
this.domElement.addEventListener( 'mousedown', mousedown, false ); this.dispose = function() {
this.domElement.removeEventListener( 'contextmenu', contextmenu, false );
this.domElement.removeEventListener( 'mousedown', mousedown, false );
this.domElement.removeEventListener( 'mousewheel', mousewheel, false );
this.domElement.removeEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
this.domElement.removeEventListener( 'touchstart', touchstart, false );
this.domElement.removeEventListener( 'touchend', touchend, false );
this.domElement.removeEventListener( 'touchmove', touchmove, false );
document.removeEventListener( 'mousemove', mousemove, false );
document.removeEventListener( 'mouseup', mouseup, false );
window.removeEventListener( 'keydown', keydown, false );
window.removeEventListener( 'keyup', keyup, false );
}
this.domElement.addEventListener( 'contextmenu', contextmenu, false );
this.domElement.addEventListener( 'mousedown', mousedown, false );
this.domElement.addEventListener( 'mousewheel', mousewheel, false ); this.domElement.addEventListener( 'mousewheel', mousewheel, false );
this.domElement.addEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox this.domElement.addEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
......
...@@ -31,6 +31,12 @@ THREE.PointerLockControls = function ( camera ) { ...@@ -31,6 +31,12 @@ THREE.PointerLockControls = function ( camera ) {
}; };
this.dispose = function() {
document.removeEventListener( 'mousemove', onMouseMove, false );
}
document.addEventListener( 'mousemove', onMouseMove, false ); document.addEventListener( 'mousemove', onMouseMove, false );
this.enabled = false; this.enabled = false;
......
...@@ -586,14 +586,33 @@ THREE.TrackballControls = function ( object, domElement ) { ...@@ -586,14 +586,33 @@ THREE.TrackballControls = function ( object, domElement ) {
} }
this.domElement.addEventListener( 'contextmenu', function ( event ) { function contextmenu( event ) {
event.preventDefault(); event.preventDefault();
}, false ); }
this.domElement.addEventListener( 'mousedown', mousedown, false ); this.dispose = function() {
this.domElement.removeEventListener( 'contextmenu', contextmenu, false );
this.domElement.removeEventListener( 'mousedown', mousedown, false );
this.domElement.removeEventListener( 'mousewheel', mousewheel, false );
this.domElement.removeEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
this.domElement.removeEventListener( 'touchstart', touchstart, false );
this.domElement.removeEventListener( 'touchend', touchend, false );
this.domElement.removeEventListener( 'touchmove', touchmove, false );
document.removeEventListener( 'mousemove', mousemove, false );
document.removeEventListener( 'mouseup', mouseup, false );
window.removeEventListener( 'keydown', keydown, false );
window.removeEventListener( 'keyup', keyup, false );
}
this.domElement.addEventListener( 'contextmenu', contextmenu, false );
this.domElement.addEventListener( 'mousedown', mousedown, false );
this.domElement.addEventListener( 'mousewheel', mousewheel, false ); this.domElement.addEventListener( 'mousewheel', mousewheel, false );
this.domElement.addEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox this.domElement.addEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
......
...@@ -116,4 +116,10 @@ THREE.VRControls = function ( object, onError ) { ...@@ -116,4 +116,10 @@ THREE.VRControls = function ( object, onError ) {
}; };
this.dispose = function () {
vrInputs = [];
};
}; };
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册