Skip to content

Commit 4ac7bac

Browse files
committed
Merge pull request #929 from cocojoe/develop
Issue Fix Instant Ease
2 parents 5ecf3fc + a6ce1e3 commit 4ac7bac

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

cocos2d-ui/CCBReader/CCAnimationManager.m

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ - (CCBSequence*)sequenceFromSequenceId:(int)seqId {
171171
- (CCActionInterval*)actionFromKeyframe0:(CCBKeyframe*)kf0 andKeyframe1:(CCBKeyframe*)kf1 propertyName:(NSString*)name node:(CCNode*)node {
172172
float duration = kf1.time - kf0.time;
173173

174+
if(kf0.easingType==kCCBKeyframeEasingInstant) {
175+
duration = 0;
176+
}
177+
174178
if ([name isEqualToString:@"rotation"]) {
175179
return [CCActionRotateTo actionWithDuration:duration angle:[kf1.value floatValue] simple:YES];
176180
} else if ([name isEqualToString:@"position"]) {
@@ -207,12 +211,12 @@ - (CCActionInterval*)actionFromKeyframe0:(CCBKeyframe*)kf0 andKeyframe1:(CCBKeyf
207211
return [CCActionTintTo actionWithDuration:duration color:color];
208212
} else if ([name isEqualToString:@"visible"]) {
209213
if ([kf1.value boolValue]) {
210-
return [CCActionSequence actionOne:[CCActionDelay actionWithDuration:duration] two:[CCActionShow action]];
214+
return [CCActionShow action];
211215
} else {
212-
return [CCActionSequence actionOne:[CCActionDelay actionWithDuration:duration] two:[CCActionHide action]];
216+
return [CCActionHide action];
213217
}
214218
} else if ([name isEqualToString:@"spriteFrame"]) {
215-
return [CCActionSequence actionOne:[CCActionDelay actionWithDuration:duration] two:[CCActionSpriteFrame actionWithSpriteFrame:kf1.value]];
219+
return [CCActionSpriteFrame actionWithSpriteFrame:kf1.value];
216220
} else {
217221
CCLOG(@"CCBReader: Failed to create animation for property: %@", name);
218222
}
@@ -356,7 +360,7 @@ - (void)runActionsForNode:(CCNode*)node sequenceProperty:(CCBSequenceProperty*)s
356360
if(numKeyframes<1) return;
357361

358362
// Action Sequence Builder
359-
NSMutableArray* actions = [NSMutableArray array];
363+
NSMutableArray* actions = [NSMutableArray array];
360364
int endFrame = startFrame+1;
361365

362366
if(endFrame==numKeyframes || endFrame<0)
@@ -855,14 +859,13 @@ - (CCActionSequence*)createActionForNode:(CCNode*)node sequenceProperty:(CCBSequ
855859

856860
CCActionInterval* action = [self actionFromKeyframe0:startKF andKeyframe1:endKF propertyName:seqProp.name node:node];
857861

858-
// Create delay to fix instant easing on non instant actions
859-
if(startKF.easingType==kCCBKeyframeEasingInstant &&
860-
![seqProp.name isEqualToString:@"spriteFrame"] &&
861-
![seqProp.name isEqualToString:@"visible"]) {
862-
[actions addObject:[CCActionDelay actionWithDuration:action.duration]];
863-
}
864-
865862
if (action) {
863+
864+
// Instant
865+
if(startKF.easingType==kCCBKeyframeEasingInstant) {
866+
[actions addObject:[CCActionDelay actionWithDuration:endKF.time-startKF.time]];
867+
}
868+
866869
// Apply Easing
867870
action = [self easeAction:action easingType:startKF.easingType easingOpt:startKF.easingOpt];
868871
[actions addObject:action];

0 commit comments

Comments
 (0)