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 {
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 {
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 {

View File

@ -124,11 +124,21 @@ void CCSkeletonAnimation::setAnimationListener (CCObject* instance, SEL_Animatio
}
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) {
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) {