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];
  • 相关阅读:
    四叉树空间索引原理及其实现
    深入理解空间搜索算法 ——数百万数据中的瞬时搜索
    空间索引
    Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题
    Visual studio 2017 中的Javascript智能提示与调试
    EasyUI Tooltip 提示框
    java编程中的断言工具类(org.springframework.util.Assert)
    Guava学习笔记:Google Guava 类库简介
    Jquery autocomplete插件
    easyui-textbox
  • 原文地址:https://www.cnblogs.com/ihojin/p/ccsprite-fadein-fadeout.html
Copyright © 2011-2022 走看看