diff --git a/spine-as3/spine-as3/src/spine/animation/Listeners.as b/spine-as3/spine-as3/src/spine/animation/Listeners.as index 37fc18f92..fa996d0a0 100644 --- a/spine-as3/spine-as3/src/spine/animation/Listeners.as +++ b/spine-as3/spine-as3/src/spine/animation/Listeners.as @@ -39,13 +39,17 @@ package spine.animation { public function add (listener:Function) : void { if (listener == null) throw new ArgumentError("listener cannot be null."); - _listeners[_listeners.length] = listener; + var indexOf:int = _listeners.indexOf(listener); + if (indexOf == -1) + _listeners[_listeners.length] = listener; } public function remove (listener:Function) : void { if (listener == null) throw new ArgumentError("listener cannot be null."); - _listeners.splice(_listeners.indexOf(listener), 1); + var indexOf:int = _listeners.indexOf(listener); + if (indexOf != -1) + _listeners.splice(_listeners.indexOf(listener), 1); } public function invoke (... args:*) : void {