class com.overset.Observer { private var subscribers:Array; function Observer () { this.subscribers = new Array(); } public function addSubscriber (classInstance):Boolean { for (var i=0; i < this.subscribers.length; i++) { if (this.subscribers[i] === classInstance) { return false; } } this.subscribers.push(classInstance); return true; } public function removeSubscriber (classInstance):Boolean { for (var i in subscribers) { if (this.subscribers[i] === classInstance) { this.subscribers.splice(i, 1); return true; } } return false; } public function iToggle (toggle:Boolean):Void { // reverse the subscribers in a new temporary array var tmpSubscribers:Array = this.subscribers; tmpSubscribers.reverse(); for (var i in tmpSubscribers) { if (toggle == true && typeof tmpSubscribers[i]._on == "function") tmpSubscribers[i]._on(); if (toggle == false && typeof tmpSubscribers[i]._off == "function") tmpSubscribers[i]._off(); } } public function update ():Void { // reverse the subscribers in a new temporary array var tmpSubscribers:Array = this.subscribers; tmpSubscribers.reverse(); for (var i in tmpSubscribers) { if (typeof tmpSubscribers[i]._update == "function") { tmpSubscribers[i]._update(); } } } }