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];
  • 相关阅读:
    vue 样式使用总结
    安卓内嵌H5只展示部分静态页面
    Excel 2016入门与提高
    Oracle Exadata技术详解
    计算机网络基础
    Photoshop扁平化平面设计手册
    C程序设计伴侣——帮你更好地理解谭浩强老师的那本书以及更多!
    中文版Project 2007实用教程
    新手学CorelDRAW X8商业设计200+
    Altium Designer 17电路设计与仿真从入门到精通
  • 原文地址:https://www.cnblogs.com/ihojin/p/ccsprite-fadein-fadeout.html
Copyright © 2011-2022 走看看