home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FCE Gold Plus
/
GOLD.iso
/
pc
/
shell.swf
/
scripts
/
__Packages
/
com
/
event
/
observable.as
Wrap
Text File
|
2007-10-16
|
2KB
|
67 lines
class com.event.observable
{
function observable()
{
var _loc3_ = this;
_loc3_.c_arrListeners = new Array();
Array.prototype.popAt = function(_iNum)
{
var _loc3_ = new Array();
var _loc2_ = this.length;
if(_iNum < _loc2_)
{
var _loc1_ = 0;
while(_loc1_ < _loc2_)
{
if(_loc1_ != _iNum)
{
_loc3_.push(this[_loc1_]);
}
_loc1_ = _loc1_ + 1;
}
_loc1_ = 0;
while(_loc1_ < _loc2_)
{
this[_loc1_] = _loc3_[_loc1_];
_loc1_ = _loc1_ + 1;
}
this.pop();
}
};
}
function addListener(_objListener)
{
var _loc1_ = this;
var _loc2_ = _objListener;
_loc1_.removeListener(_loc2_);
_loc2_._name = new String("ID" + _loc1_.c_iNameCounter++);
_loc1_.c_arrListeners.push(_loc2_);
}
function removeListener(_objListener)
{
var _loc2_ = this;
var _loc3_ = _objListener;
var _loc1_ = 0;
while(_loc1_ < _loc2_.c_arrListeners.length)
{
if(_loc3_._name == _loc2_.c_arrListeners[_loc1_]._name)
{
_loc2_.c_arrListeners.popAt(_loc1_);
break;
}
_loc1_ = _loc1_ + 1;
}
}
function broadcastEvent(_strFunction, _objValue)
{
var _loc2_ = this;
var _loc3_ = _strFunction;
var _loc1_ = 0;
while(_loc1_ < _loc2_.c_arrListeners.length)
{
_loc2_.c_arrListeners[_loc1_][_loc3_].call(_loc2_.c_arrListeners[_loc1_],_objValue,_loc2_);
_loc1_ = _loc1_ + 1;
}
}
}