diff --git a/examples/js/controls/DeviceOrientationControls.js b/examples/js/controls/DeviceOrientationControls.js index 576adc0b90aaa38ebf2cc09ed75d40faad6c28da..c8736b14da931316d8642b0c4a004085349b6312 100644 --- a/examples/js/controls/DeviceOrientationControls.js +++ b/examples/js/controls/DeviceOrientationControls.js @@ -88,6 +88,12 @@ THREE.DeviceOrientationControls = function ( object ) { }; + this.dispose = function () { + + this.disconnect(); + + }; + this.connect(); }; diff --git a/examples/js/controls/DragControls.js b/examples/js/controls/DragControls.js index 9bbe2c9f4994fe53b5c87bfe72ee866250571f3c..5d875f68274e0dbf0bdcc254a91a6ca5ce4d0223 100644 --- a/examples/js/controls/DragControls.js +++ b/examples/js/controls/DragControls.js @@ -96,6 +96,12 @@ THREE.DragControls = function( _camera, _objects, _domElement ) { }; + this.dispose = function() { + + me.deactivate(); + + }; + this.activate(); function onDocumentMouseMove( event ) { diff --git a/examples/js/controls/EditorControls.js b/examples/js/controls/EditorControls.js index 8ed19e373c7df0fa627a84095a5b22f40d5f8a70..db7715d53df5e2dfd6dd7382030a6ec0b58f307d 100644 --- a/examples/js/controls/EditorControls.js +++ b/examples/js/controls/EditorControls.js @@ -203,11 +203,30 @@ THREE.EditorControls = function ( object, domElement ) { } - domElement.addEventListener( 'contextmenu', function ( event ) { + function contextmenu( event ) { 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( 'mousewheel', onMouseWheel, false ); domElement.addEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox diff --git a/examples/js/controls/FirstPersonControls.js b/examples/js/controls/FirstPersonControls.js index 7634b13277595f799b81f2c58c7240b73ef80173..c754ea69d245d7f5600c3e502d499e016b7b6605 100644 --- a/examples/js/controls/FirstPersonControls.js +++ b/examples/js/controls/FirstPersonControls.js @@ -253,19 +253,37 @@ THREE.FirstPersonControls = function ( object, domElement ) { }; - - this.domElement.addEventListener( 'contextmenu', function ( event ) { + function contextmenu( event ) { 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( 'mousedown', bind( this, this.onMouseDown ), false ); - this.domElement.addEventListener( 'mouseup', bind( this, this.onMouseUp ), false ); + this.domElement.addEventListener( 'contextmenu', contextmenu, false ); + this.domElement.addEventListener( 'mousemove', _onMouseMove, false ); + this.domElement.addEventListener( 'mousedown', _onMouseDown, false ); + this.domElement.addEventListener( 'mouseup', _onMouseUp, false ); - window.addEventListener( 'keydown', bind( this, this.onKeyDown ), false ); - window.addEventListener( 'keyup', bind( this, this.onKeyUp ), false ); + window.addEventListener( 'keydown', _onKeyDown, false ); + window.addEventListener( 'keyup', _onKeyUp, false ); function bind( scope, fn ) { diff --git a/examples/js/controls/FlyControls.js b/examples/js/controls/FlyControls.js index 155aa06e408e81e3dbd67621bd87e9768137e631..2b24f7cf1bc6c2ff7dcc30d0b9970ef88872efba 100644 --- a/examples/js/controls/FlyControls.js +++ b/examples/js/controls/FlyControls.js @@ -254,18 +254,38 @@ THREE.FlyControls = function ( object, domElement ) { } - this.domElement.addEventListener( 'contextmenu', function ( event ) { + function contextmenu( event ) { 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( 'mousedown', bind( this, this.mousedown ), false ); - this.domElement.addEventListener( 'mouseup', bind( this, this.mouseup ), false ); + this.domElement.addEventListener( 'mousemove', _mousemove, false ); + this.domElement.addEventListener( 'mousedown', _mousedown, false ); + this.domElement.addEventListener( 'mouseup', _mouseup, false ); - window.addEventListener( 'keydown', bind( this, this.keydown ), false ); - window.addEventListener( 'keyup', bind( this, this.keyup ), false ); + window.addEventListener( 'keydown', _keydown, false ); + window.addEventListener( 'keyup', _keyup, false ); this.updateMovementVector(); this.updateRotationVector(); diff --git a/examples/js/controls/MouseControls.js b/examples/js/controls/MouseControls.js index 11c31b7efe6fc73e27439d3e97124b8f80ab2715..994917f85b7ddd2fb82303afab2cdccafc8090e6 100644 --- a/examples/js/controls/MouseControls.js +++ b/examples/js/controls/MouseControls.js @@ -50,6 +50,12 @@ THREE.MouseControls = function ( object ) { }; + this.dispose = function() { + + document.removeEventListener( 'mousemove', onMouseMove, false ); + + } + document.addEventListener( 'mousemove', onMouseMove, false ); }; diff --git a/examples/js/controls/OrbitControls.js b/examples/js/controls/OrbitControls.js index faaff17ee6422e9d2f6d877e4b1ef43f7f477048..a64b85a9816ab0e0c0d4e1951a1266f861c3c6bb 100644 --- a/examples/js/controls/OrbitControls.js +++ b/examples/js/controls/OrbitControls.js @@ -750,11 +750,31 @@ } - this.domElement.addEventListener( 'contextmenu', function ( event ) { + function contextmenu( event ) { 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( 'mousewheel', onMouseWheel, false ); diff --git a/examples/js/controls/OrthographicTrackballControls.js b/examples/js/controls/OrthographicTrackballControls.js index c10179ae74371f02d586d275990ab5f59af2d511..7421f4f2642a6ddff38e84a3317d38e6326cdf4b 100644 --- a/examples/js/controls/OrthographicTrackballControls.js +++ b/examples/js/controls/OrthographicTrackballControls.js @@ -606,14 +606,34 @@ THREE.OrthographicTrackballControls = function ( object, domElement ) { } - this.domElement.addEventListener( 'contextmenu', function ( event ) { + function contextmenu( event ) { 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( 'DOMMouseScroll', mousewheel, false ); // firefox diff --git a/examples/js/controls/PointerLockControls.js b/examples/js/controls/PointerLockControls.js index ae839264c750257d0e5d5cf552041050c87388f3..33eba7c7f73a6e308252966b6b650f0e311508d9 100644 --- a/examples/js/controls/PointerLockControls.js +++ b/examples/js/controls/PointerLockControls.js @@ -31,6 +31,12 @@ THREE.PointerLockControls = function ( camera ) { }; + this.dispose = function() { + + document.removeEventListener( 'mousemove', onMouseMove, false ); + + } + document.addEventListener( 'mousemove', onMouseMove, false ); this.enabled = false; diff --git a/examples/js/controls/TrackballControls.js b/examples/js/controls/TrackballControls.js index 28d39f81fbe096b083af505dd17f2dcde747b421..ba95438c01836ad86060e1daa1918da9eb350dd4 100644 --- a/examples/js/controls/TrackballControls.js +++ b/examples/js/controls/TrackballControls.js @@ -586,14 +586,33 @@ THREE.TrackballControls = function ( object, domElement ) { } - this.domElement.addEventListener( 'contextmenu', function ( event ) { + function contextmenu( event ) { 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( 'DOMMouseScroll', mousewheel, false ); // firefox diff --git a/examples/js/controls/VRControls.js b/examples/js/controls/VRControls.js index f7f90fc6f1f80fb03dc046e59093f5fb882d162a..17817df7fc8702804a8e93ac7b96dc4c8af9a555 100644 --- a/examples/js/controls/VRControls.js +++ b/examples/js/controls/VRControls.js @@ -116,4 +116,10 @@ THREE.VRControls = function ( object, onError ) { }; + this.dispose = function () { + + vrInputs = []; + + }; + };