home *** CD-ROM | disk | FTP | other *** search
/ FCE Gold Plus / GOLD.iso / pc / shell.swf / scripts / __Packages / com / event / observable.as
Text File  |  2007-10-16  |  2KB  |  67 lines

  1. class com.event.observable
  2. {
  3.    function observable()
  4.    {
  5.       var _loc3_ = this;
  6.       _loc3_.c_arrListeners = new Array();
  7.       Array.prototype.popAt = function(_iNum)
  8.       {
  9.          var _loc3_ = new Array();
  10.          var _loc2_ = this.length;
  11.          if(_iNum < _loc2_)
  12.          {
  13.             var _loc1_ = 0;
  14.             while(_loc1_ < _loc2_)
  15.             {
  16.                if(_loc1_ != _iNum)
  17.                {
  18.                   _loc3_.push(this[_loc1_]);
  19.                }
  20.                _loc1_ = _loc1_ + 1;
  21.             }
  22.             _loc1_ = 0;
  23.             while(_loc1_ < _loc2_)
  24.             {
  25.                this[_loc1_] = _loc3_[_loc1_];
  26.                _loc1_ = _loc1_ + 1;
  27.             }
  28.             this.pop();
  29.          }
  30.       };
  31.    }
  32.    function addListener(_objListener)
  33.    {
  34.       var _loc1_ = this;
  35.       var _loc2_ = _objListener;
  36.       _loc1_.removeListener(_loc2_);
  37.       _loc2_._name = new String("ID" + _loc1_.c_iNameCounter++);
  38.       _loc1_.c_arrListeners.push(_loc2_);
  39.    }
  40.    function removeListener(_objListener)
  41.    {
  42.       var _loc2_ = this;
  43.       var _loc3_ = _objListener;
  44.       var _loc1_ = 0;
  45.       while(_loc1_ < _loc2_.c_arrListeners.length)
  46.       {
  47.          if(_loc3_._name == _loc2_.c_arrListeners[_loc1_]._name)
  48.          {
  49.             _loc2_.c_arrListeners.popAt(_loc1_);
  50.             break;
  51.          }
  52.          _loc1_ = _loc1_ + 1;
  53.       }
  54.    }
  55.    function broadcastEvent(_strFunction, _objValue)
  56.    {
  57.       var _loc2_ = this;
  58.       var _loc3_ = _strFunction;
  59.       var _loc1_ = 0;
  60.       while(_loc1_ < _loc2_.c_arrListeners.length)
  61.       {
  62.          _loc2_.c_arrListeners[_loc1_][_loc3_].call(_loc2_.c_arrListeners[_loc1_],_objValue,_loc2_);
  63.          _loc1_ = _loc1_ + 1;
  64.       }
  65.    }
  66. }
  67.