CCSprite: fade 效果切换图片

//CCSprite+Animation.h
#import "CCSprite.h"

@interface CCSprite (Animation)

+ (void)fadeWithOldSprite:(CCSprite *)oldSprite newSprite:(CCSprite *)newSprite callFuncTarget:(id)target callFuncAction:(SEL)action fadeDuration:(NSTimeInterval)duration;
@end

//CCSprite+Animation.m
#import "CCSprite+Animation.h"
#import "CCActionInterval.h"
#import "CCActionInstant.h"

@implementation CCSprite (Animation)

+ (void)fadeWithOldSprite:(CCSprite *)oldSprite newSprite:(CCSprite *)newSprite callFuncTarget:(id)target callFuncAction:(SEL)action fadeDuration:(NSTimeInterval)duration
{
    [oldSprite.parent addChild:newSprite z:oldSprite.zOrder];
    CCFadeOut *fadeOut = [CCFadeOut actionWithDuration:duration];
    CCCallFunc *callFunc = [CCCallFunc actionWithTarget:target selector:action];
    CCSequence *sequence = [CCSequence actionWithArray:@[fadeOut, callFunc]];
    [oldSprite runAction:sequence];
    
    CCFadeIn *fadeIn = [CCFadeIn actionWithDuration:duration];
    [newSprite runAction:fadeIn];
}
@end

 

实现3秒切换图片

- (void)startToFadeSprite
{
    static NSString *imageNames[] = {
        @"sample_img@2x.png",
        @"sample_img2@2x.png",
        @"sample_img3@2x.png",
        @"sample_img4@2x.png"
    };
    static NSInteger index = 0;
    static NSInteger imageCount = 4;
    
    if (index == imageCount) {
        index = 0;
    }
    
    if (fading == NO) {
        fading = YES;
        photoTemp = [CCSprite spriteWithFile:imageNames[index]];
        photoTemp.textureRect = photo.textureRect;
        photoTemp.anchorPoint = photo.anchorPoint;
        photoTemp.position = photo.position;
        photoTemp.scaleX = photo.scaleX;
        photoTemp.scaleY = photo.scaleY;
        [CCSprite fadeWithOldSprite:photo newSprite:photoTemp callFuncTarget:self callFuncAction:@selector(fadeFinished) fadeDuration:0.3];
        index++;
    }
}

- (void)fadeFinished
{
    [self removeChild:photo];
    photo = photoTemp;
    fading = NO;
    
    CCDelayTime *delay = [CCDelayTime actionWithDuration:2.7];
    CCCallFunc *callFunc = [CCCallFunc actionWithTarget:self selector:@selector(startToFadeSprite)];
    [self runAction:[CCSequence actions:delay, callFunc, nil]];
}


//init
photo = [CCSprite spriteWithFile:@"sample_img@2x.png"];
[self addChild:photo];

//just after
[self startToFadeSprite];

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值