Don't crash if animation is not found.

http://www.esotericsoftware.com/forum/viewtopic.php?f=7&t=1379
This commit is contained in:
NathanSweet 2013-10-08 12:06:56 +02:00
parent 961a93719c
commit 1d8e12442e
2 changed files with 24 additions and 4 deletions

View File

@ -132,11 +132,21 @@ static void callback (AnimationState* state, int trackIndex, EventType type, Eve
} }
- (TrackEntry*) setAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop { - (TrackEntry*) setAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop {
return AnimationState_setAnimationByName(_state, trackIndex, [name UTF8String], loop); Animation* animation = SkeletonData_findAnimation(_skeleton->data, [name UTF8String]);
if (!animation) {
CCLOG(@"Spine: Animation not found: %@", name);
return 0;
}
return AnimationState_setAnimation(_state, trackIndex, animation, loop);
} }
- (TrackEntry*) addAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop afterDelay:(int)delay { - (TrackEntry*) addAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop afterDelay:(int)delay {
return AnimationState_addAnimationByName(_state, trackIndex, [name UTF8String], loop, delay); Animation* animation = SkeletonData_findAnimation(_skeleton->data, [name UTF8String]);
if (!animation) {
CCLOG(@"Spine: Animation not found: %@", name);
return 0;
}
return AnimationState_addAnimation(_state, trackIndex, animation, loop, delay);
} }
- (TrackEntry*) getCurrentForTrack:(int)trackIndex { - (TrackEntry*) getCurrentForTrack:(int)trackIndex {

View File

@ -124,11 +124,21 @@ void CCSkeletonAnimation::setAnimationListener (CCObject* instance, SEL_Animatio
} }
TrackEntry* CCSkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) { TrackEntry* CCSkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) {
return AnimationState_setAnimationByName(state, trackIndex, name, loop); Animation* animation = SkeletonData_findAnimation(skeleton->data, name);
if (!animation) {
CCLog("Spine: Animation not found: %s", name);
return 0;
}
return AnimationState_setAnimation(state, trackIndex, animation, loop);
} }
TrackEntry* CCSkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) { TrackEntry* CCSkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) {
return AnimationState_addAnimationByName(state, trackIndex, name, loop, delay); Animation* animation = SkeletonData_findAnimation(skeleton->data, name);
if (!animation) {
CCLog("Spine: Animation not found: %s", name);
return 0;
}
return AnimationState_addAnimation(state, trackIndex, animation, loop, delay);
} }
TrackEntry* CCSkeletonAnimation::getCurrent (int trackIndex) { TrackEntry* CCSkeletonAnimation::getCurrent (int trackIndex) {