EventDispatcher.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /**
  2. * https://github.com/mrdoob/eventdispatcher.js/
  3. */
  4. THREE.EventDispatcher = function () {}
  5. THREE.EventDispatcher.prototype = {
  6. constructor: THREE.EventDispatcher,
  7. apply: function ( object ) {
  8. object.addEventListener = THREE.EventDispatcher.prototype.addEventListener;
  9. object.hasEventListener = THREE.EventDispatcher.prototype.hasEventListener;
  10. object.removeEventListener = THREE.EventDispatcher.prototype.removeEventListener;
  11. object.dispatchEvent = THREE.EventDispatcher.prototype.dispatchEvent;
  12. },
  13. addEventListener: function ( type, listener ) {
  14. if ( this._listeners === undefined ) this._listeners = {};
  15. var listeners = this._listeners;
  16. if ( listeners[ type ] === undefined ) {
  17. listeners[ type ] = [];
  18. }
  19. if ( listeners[ type ].indexOf( listener ) === - 1 ) {
  20. listeners[ type ].push( listener );
  21. }
  22. },
  23. hasEventListener: function ( type, listener ) {
  24. if ( this._listeners === undefined ) return false;
  25. var listeners = this._listeners;
  26. if ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {
  27. return true;
  28. }
  29. return false;
  30. },
  31. removeEventListener: function ( type, listener ) {
  32. if ( this._listeners === undefined ) return;
  33. var listeners = this._listeners;
  34. var listenerArray = listeners[ type ];
  35. if ( listenerArray !== undefined ) {
  36. var index = listenerArray.indexOf( listener );
  37. if ( index !== - 1 ) {
  38. listenerArray.splice( index, 1 );
  39. }
  40. }
  41. },
  42. dispatchEvent: function ( event ) {
  43. if ( this._listeners === undefined ) return;
  44. var listeners = this._listeners;
  45. var listenerArray = listeners[ event.type ];
  46. if ( listenerArray !== undefined ) {
  47. event.target = this;
  48. var array = [];
  49. var length = listenerArray.length;
  50. for ( var i = 0; i < length; i ++ ) {
  51. array[ i ] = listenerArray[ i ];
  52. }
  53. for ( var i = 0; i < length; i ++ ) {
  54. array[ i ].call( this, event );
  55. }
  56. }
  57. }
  58. };