mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-09 08:38:43 +08:00
[as3] Fixed event registration, see http://esotericsoftware.com/forum/Runtimes-spine-AS3-major-bug-callbacks-8045
This commit is contained in:
parent
a810a8d5c4
commit
60bbfce2fc
Binary file not shown.
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user