diff --git a/spine-as3/spine-as3-example/lib/spine-as3.swc b/spine-as3/spine-as3-example/lib/spine-as3.swc index 65e0f3780..058771f70 100644 Binary files a/spine-as3/spine-as3-example/lib/spine-as3.swc and b/spine-as3/spine-as3-example/lib/spine-as3.swc differ diff --git a/spine-as3/spine-as3-example/src/spine/examples/Main.as b/spine-as3/spine-as3-example/src/spine/examples/Main.as index e5f3180b2..a1fef4c9d 100644 --- a/spine-as3/spine-as3-example/src/spine/examples/Main.as +++ b/spine-as3/spine-as3-example/src/spine/examples/Main.as @@ -29,6 +29,7 @@ *****************************************************************************/ package spine.examples { + import spine.animation.TrackEntry; import flash.display.Sprite; import spine.*; @@ -65,17 +66,23 @@ package spine.examples { skeleton.x = 400; skeleton.y = 560; - skeleton.state.onStart.add(function(trackIndex : int) : void { - trace(trackIndex + " fuu start: " + skeleton.state.getCurrent(trackIndex)); + skeleton.state.onStart.add(function(entry : TrackEntry) : void { + trace(entry.trackIndex + " start: " + entry.animation.name); }); - skeleton.state.onEnd.add(function(trackIndex : int) : void { - trace(trackIndex + " end: " + skeleton.state.getCurrent(trackIndex)); + skeleton.state.onInterrupt.add(function(entry : TrackEntry) : void { + trace(entry.trackIndex + " interrupt: " + entry.animation.name); }); - skeleton.state.onComplete.add(function(trackIndex : int, count : int) : void { - trace(trackIndex + " complete: " + skeleton.state.getCurrent(trackIndex) + ", " + count); + skeleton.state.onEnd.add(function(entry : TrackEntry) : void { + trace(entry.trackIndex + " end: " + entry.animation.name); }); - 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); + skeleton.state.onComplete.add(function(entry : TrackEntry) : void { + trace(entry.trackIndex + " complete: " + entry.animation.name); + }); + skeleton.state.onDispose.add(function(entry : TrackEntry) : void { + trace(entry.trackIndex + " dispose: " + entry.animation.name); + }); + skeleton.state.onEvent.add(function(entry : TrackEntry, event : Event) : void { + trace(entry.trackIndex + " event: " + entry.animation.name + ", " + event.data.name + ": " + event.intValue + ", " + event.floatValue + ", " + event.stringValue); }); if (false) { diff --git a/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as b/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as index 543aa8aed..6ebe02867 100644 --- a/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as +++ b/spine-as3/spine-as3/src/spine/flash/SkeletonAnimation.as @@ -29,6 +29,7 @@ *****************************************************************************/ package spine.flash { + import flash.events.Event; import spine.SkeletonData; import spine.animation.AnimationState; import spine.animation.AnimationStateData; @@ -40,6 +41,12 @@ package spine.flash { super(skeletonData); state = new AnimationState(stateData ? stateData : new AnimationStateData(skeletonData)); } + + override protected function onRemove(e:Event):void{ + state.clearListeners(); + state.clearListenerNotifications(); + super.onRemove(e); + } override public function advanceTime(time : Number) : void { state.update(time * timeScale); diff --git a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as index 8c0b1a85c..06fbbb0c1 100644 --- a/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as +++ b/spine-as3/spine-as3/src/spine/flash/SkeletonSprite.as @@ -60,6 +60,21 @@ package spine.flash { _skeleton = new Skeleton(skeletonData); _skeleton.updateWorldTransform(); + addEventListener(Event.ADDED_TO_STAGE, onAdd); + addEventListener(Event.REMOVED_FROM_STAGE, onRemove); + } + protected function onRemove(e:Event) : void { + removeEventListener(Event.ENTER_FRAME, enterFrame); + } + + public function clearListeners() { + removeEventListener(Event.ADDED_TO_STAGE, onAdd); + removeEventListener(Event.REMOVED_FROM_STAGE, onRemove); + } + + protected function onAdd(event:Event) : void { + lastTime = getTimer(); + enterFrame(null); addEventListener(Event.ENTER_FRAME, enterFrame); } diff --git a/spine-starling/spine-starling-example/lib/spine-as3.swc b/spine-starling/spine-starling-example/lib/spine-as3.swc index 65e0f3780..058771f70 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-as3.swc and b/spine-starling/spine-starling-example/lib/spine-as3.swc differ diff --git a/spine-starling/spine-starling/lib/spine-as3.swc b/spine-starling/spine-starling/lib/spine-as3.swc index 65e0f3780..058771f70 100644 Binary files a/spine-starling/spine-starling/lib/spine-as3.swc and b/spine-starling/spine-starling/lib/spine-as3.swc differ