From dca388bb98d709d280909fd5f202a98c29b13bd2 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sat, 21 Dec 2013 18:44:56 +0100 Subject: [PATCH] Changed listeners to Vector.. --- spine-as3/spine-as3-example/src/Main.as | 16 ++++++------ .../src/spine/animation/AnimationState.as | 26 ++++++++++++------- .../src/AtlasExample.as | 18 ++++++------- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/spine-as3/spine-as3-example/src/Main.as b/spine-as3/spine-as3-example/src/Main.as index 6d6cd35f4..bbfa8f301 100644 --- a/spine-as3/spine-as3-example/src/Main.as +++ b/spine-as3/spine-as3-example/src/Main.as @@ -71,19 +71,19 @@ public class Main extends Sprite { skeleton.x = 320; skeleton.y = 420; - skeleton.state.onStart = function (trackIndex:int) : void { + skeleton.state.onStart.push(function (trackIndex:int) : void { trace(trackIndex + " start: " + skeleton.state.getCurrent(trackIndex)); - }; - skeleton.state.onEnd = function (trackIndex:int) : void { + }); + skeleton.state.onEnd.push(function (trackIndex:int) : void { trace(trackIndex + " end: " + skeleton.state.getCurrent(trackIndex)); - }; - skeleton.state.onComplete = function (trackIndex:int, count:int) : void { + }); + skeleton.state.onComplete.push(function (trackIndex:int, count:int) : void { trace(trackIndex + " complete: " + skeleton.state.getCurrent(trackIndex) + ", " + count); - }; - skeleton.state.onEvent = function (trackIndex:int, event:Event) : void { + }); + skeleton.state.onEvent.push(function (trackIndex:int, event:Event) : void { trace(trackIndex + " event: " + skeleton.state.getCurrent(trackIndex) + ", " + event.data.name + ": " + event.intValue + ", " + event.floatValue + ", " + event.stringValue); - }; + }); if (true) { skeleton.state.setAnimationByName(0, "drawOrder", true); diff --git a/spine-as3/spine-as3/src/spine/animation/AnimationState.as b/spine-as3/spine-as3/src/spine/animation/AnimationState.as index 8113aefb5..5c537932e 100644 --- a/spine-as3/spine-as3/src/spine/animation/AnimationState.as +++ b/spine-as3/spine-as3/src/spine/animation/AnimationState.as @@ -40,7 +40,10 @@ public class AnimationState { private var _data:AnimationStateData; private var _tracks:Vector. = new Vector.(); private var _events:Vector. = new Vector.(); - public var onStart:Function, onEnd:Function, onComplete:Function, onEvent:Function; + 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 timeScale:Number = 1; public function AnimationState (data:AnimationStateData) { @@ -102,14 +105,16 @@ public class AnimationState { for each (var event:Event in _events) { if (current.onEvent != null) current.onEvent(i, event); - if (onEvent != null) onEvent(i, event); + for each (var onEventFunc:Function in onEvent) + onEventFunc(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); - if (onComplete != null) onComplete(i, count); + for each (var onCompleteFunc:Function in onComplete) + onCompleteFunc(i, count); } current.lastTime = current.time; @@ -128,7 +133,8 @@ public class AnimationState { if (!current) return; if (current.onEnd != null) current.onEnd(trackIndex); - if (onEnd != null) onEnd(trackIndex); + for each (var onEndFunc:Function in onEnd) + onEndFunc(trackIndex); _tracks[trackIndex] = null; } @@ -144,10 +150,11 @@ public class AnimationState { var current:TrackEntry = expandToIndex(index); if (current) { current.previous = null; - + if (current.onEnd != null) current.onEnd(index); - if (onEnd != null) onEnd(index); - + for each (var onEndFunc:Function in onEnd) + onEndFunc(index); + entry.mixDuration = _data.getMix(current.animation, entry.animation); if (entry.mixDuration > 0) { entry.mixTime = 0; @@ -156,9 +163,10 @@ public class AnimationState { } _tracks[index] = entry; - + if (entry.onStart != null) entry.onStart(index); - if (onStart != null) onStart(index); + for each (var onStartFunc:Function in onStart) + onStartFunc(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 e25f03355..b5967b69b 100644 --- a/spine-starling/spine-starling-example/src/AtlasExample.as +++ b/spine-starling/spine-starling-example/src/AtlasExample.as @@ -44,20 +44,20 @@ public class AtlasExample extends Sprite { skeleton.x = 320; skeleton.y = 420; - skeleton.state.onStart = function (trackIndex:int) : void { + skeleton.state.onStart.push(function (trackIndex:int) : void { trace(trackIndex + " start: " + skeleton.state.getCurrent(trackIndex)); - }; - skeleton.state.onEnd = function (trackIndex:int) : void { + }); + skeleton.state.onEnd.push(function (trackIndex:int) : void { trace(trackIndex + " end: " + skeleton.state.getCurrent(trackIndex)); - }; - skeleton.state.onComplete = function (trackIndex:int, count:int) : void { + }); + skeleton.state.onComplete.push(function (trackIndex:int, count:int) : void { trace(trackIndex + " complete: " + skeleton.state.getCurrent(trackIndex) + ", " + count); - }; - skeleton.state.onEvent = function (trackIndex:int, event:Event) : void { + }); + skeleton.state.onEvent.push(function (trackIndex:int, event:Event) : void { trace(trackIndex + " event: " + skeleton.state.getCurrent(trackIndex) + ", " + event.data.name + ": " + event.intValue + ", " + event.floatValue + ", " + event.stringValue); - }; - + }); + skeleton.state.setAnimationByName(0, "walk", true); skeleton.state.addAnimationByName(0, "jump", false, 3); skeleton.state.addAnimationByName(0, "walk", true, 0);