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];
  • 相关阅读:
    Linux系统目录结构介绍
    【Android开发学习笔记】【第二课】Activity学习
    【Android开发学习笔记】【第一课】初识New Project,工程文件介绍
    Android 环境快速搭建-详细步骤-win7-64bit
    【VC6】【集成工具】将输入信息集成到VC工具中
    Intellij IDEA快捷键
    C#+Winform开发窗体程序
    使用U盘重装系统
    C#进阶学习笔记
    C#基础学习笔记
  • 原文地址:https://www.cnblogs.com/ihojin/p/ccsprite-fadein-fadeout.html
Copyright © 2011-2022 走看看