diff --git a/spine-as3/spine-as3-example/src/Main.as b/spine-as3/spine-as3-example/src/Main.as index bbfa8f301..40e453139 100644 --- a/spine-as3/spine-as3-example/src/Main.as +++ b/spine-as3/spine-as3-example/src/Main.as @@ -71,16 +71,16 @@ public class Main extends Sprite { skeleton.x = 320; skeleton.y = 420; - skeleton.state.onStart.push(function (trackIndex:int) : void { + skeleton.state.onStart.add(function (trackIndex:int) : void { trace(trackIndex + " start: " + skeleton.state.getCurrent(trackIndex)); }); - skeleton.state.onEnd.push(function (trackIndex:int) : void { + skeleton.state.onEnd.add(function (trackIndex:int) : void { trace(trackIndex + " end: " + skeleton.state.getCurrent(trackIndex)); }); - skeleton.state.onComplete.push(function (trackIndex:int, count:int) : void { + skeleton.state.onComplete.add(function (trackIndex:int, count:int) : void { trace(trackIndex + " complete: " + skeleton.state.getCurrent(trackIndex) + ", " + count); }); - skeleton.state.onEvent.push(function (trackIndex:int, event:Event) : void { + skeleton.state.onEvent.add(function (trackIndex:int, event:Event) : void { trace(trackIndex + " event: " + skeleton.state.getCurrent(trackIndex) + ", " + event.data.name + ": " + event.intValue + ", " + event.floatValue + ", " + event.stringValue); }); diff --git a/spine-as3/spine-as3/src/spine/animation/AnimationState.as b/spine-as3/spine-as3/src/spine/animation/AnimationState.as index 5c537932e..31640373b 100644 --- a/spine-as3/spine-as3/src/spine/animation/AnimationState.as +++ b/spine-as3/spine-as3/src/spine/animation/AnimationState.as @@ -40,10 +40,10 @@ public class AnimationState { private var _data:AnimationStateData; private var _tracks:Vector. = new Vector.(); private var _events:Vector. = new Vector.(); - public var onStart:Vector. = new Vector.(); - public var onEnd:Vector. = new Vector.(); - public var onComplete:Vector. = new Vector.(); - public var onEvent:Vector. = new Vector.(); + public var onStart:Listeners = new Listeners(); + public var onEnd:Listeners = new Listeners(); + public var onComplete:Listeners = new Listeners(); + public var onEvent:Listeners = new Listeners(); public var timeScale:Number = 1; public function AnimationState (data:AnimationStateData) { @@ -105,16 +105,14 @@ public class AnimationState { for each (var event:Event in _events) { if (current.onEvent != null) current.onEvent(i, event); - for each (var onEventFunc:Function in onEvent) - onEventFunc(i, event); + onEvent.invoke(i, event); } // Check if completed the animation or a loop iteration. if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime)) { var count:int = (int)(time / endTime); if (current.onComplete != null) current.onComplete(i, count); - for each (var onCompleteFunc:Function in onComplete) - onCompleteFunc(i, count); + onComplete.invoke(i, count); } current.lastTime = current.time; @@ -133,8 +131,7 @@ public class AnimationState { if (!current) return; if (current.onEnd != null) current.onEnd(trackIndex); - for each (var onEndFunc:Function in onEnd) - onEndFunc(trackIndex); + onEnd.invoke(trackIndex); _tracks[trackIndex] = null; } @@ -152,8 +149,7 @@ public class AnimationState { current.previous = null; if (current.onEnd != null) current.onEnd(index); - for each (var onEndFunc:Function in onEnd) - onEndFunc(index); + onEnd.invoke(index); entry.mixDuration = _data.getMix(current.animation, entry.animation); if (entry.mixDuration > 0) { @@ -165,8 +161,7 @@ public class AnimationState { _tracks[index] = entry; if (entry.onStart != null) entry.onStart(index); - for each (var onStartFunc:Function in onStart) - onStartFunc(index); + onStart.invoke(index); } public function setAnimationByName (trackIndex:int, animationName:String, loop:Boolean) : TrackEntry { diff --git a/spine-starling/spine-starling-example/src/AtlasExample.as b/spine-starling/spine-starling-example/src/AtlasExample.as index b5967b69b..df43a5a2f 100644 --- a/spine-starling/spine-starling-example/src/AtlasExample.as +++ b/spine-starling/spine-starling-example/src/AtlasExample.as @@ -44,16 +44,16 @@ public class AtlasExample extends Sprite { skeleton.x = 320; skeleton.y = 420; - skeleton.state.onStart.push(function (trackIndex:int) : void { + skeleton.state.onStart.add(function (trackIndex:int) : void { trace(trackIndex + " start: " + skeleton.state.getCurrent(trackIndex)); }); - skeleton.state.onEnd.push(function (trackIndex:int) : void { + skeleton.state.onEnd.add(function (trackIndex:int) : void { trace(trackIndex + " end: " + skeleton.state.getCurrent(trackIndex)); }); - skeleton.state.onComplete.push(function (trackIndex:int, count:int) : void { + skeleton.state.onComplete.add(function (trackIndex:int, count:int) : void { trace(trackIndex + " complete: " + skeleton.state.getCurrent(trackIndex) + ", " + count); }); - skeleton.state.onEvent.push(function (trackIndex:int, event:Event) : void { + skeleton.state.onEvent.add(function (trackIndex:int, event:Event) : void { trace(trackIndex + " event: " + skeleton.state.getCurrent(trackIndex) + ", " + event.data.name + ": " + event.intValue + ", " + event.floatValue + ", " + event.stringValue); });