zoukankan      html  css  js  c++  java
  • 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];
  • 相关阅读:
    Json schema前奏 关于JSON
    笔试题:能被1~10同时整除的最小整数是2520,问能被1~20同时整除的最小整数是多少?
    CentOS7 安装 Docker、最佳Docker学习文档
    2019年4399暑期实习算法题2,迷宫路径条数
    2019vivo秋招提前批笔试题第3题
    python内存机制与垃圾回收、调优手段
    N皇后问题的python实现
    一行代码判断一个数是否是2的整数次方
    在O(1)的时间内删除链表节点
    打印从1到n位数的最大值
  • 原文地址:https://www.cnblogs.com/ihojin/p/ccsprite-fadein-fadeout.html
Copyright © 2011-2022 走看看