zoukankan      html  css  js  c++  java
  • cocos2d-x创建精灵动画方式汇总

    1、创建精灵框架缓存,并向其中添加相应的动画文件(plist),最后,通过动画集缓存生产动画

    CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();  
    cache->addSpriteFramesWithFile("animations/grossini.plist");  
    cache->addSpriteFramesWithFile("animations/grossini_gray.plist", "animations/grossini_gray.png");  
    CCSpriteBatchNode *spritebatch = CCSpriteBatchNode::create("animations/grossini.png");//用于批量生产精灵   
    CCArray* animFrames = CCArray::createWithCapacity(15);//动态生成数组,类似于vector  
    for(int i = 1; i < 4; i++)  
    {  
        //sprintf的作用是字符串格式化,主要功能是把格式化的数据写入某个字符串中。sprintf(str, “ani_conch_%d.png”, 1)后str的值就变成了:ani_conch_1.png  
        sprintf(str, "grossini_blue_%02d.png",i);//两位数字,不够的话,用零补全  
        CCSpriteFrame *frame = cache->spriteFrameByName(str);  
        animFrames->addObject(frame);  
    }  
    animation = CCAnimation::createWithSpriteFrames(animFrames, 0.2f);   //创建动画集,切换时间为0.2s  
    // Add an animation to the Cache  
    CCAnimationCache::sharedAnimationCache()->addAnimation(animation, "dance_blue"); // 把此动画集加入动画集缓存中,并命名为dance_blue  
    CCAnimationCache *animCache = CCAnimationCache::sharedAnimationCache();     //共享动画集缓存   
    CCAnimation *normal = animCache->animationByName("dance");      //获得动画集缓存  
    CCAnimate *animN = CCAnimate::create(normal);      //创建动画 

    另外,CCString * str = CCString::createWithFormat("market_chipsLogo%d.png", idx);也可以实现替换数字的效果。

    2、直接传入多个图片文件,生成动画

    CCSprite *mainsprite=CCSprite::create("catBody1.png");  
    CCAnimation *animation=CCAnimation::create();  
    animation->addSpriteFrameWithFileName("catBody1.png");  
    animation->addSpriteFrameWithFileName("catBody2-4.png");  
    animation->addSpriteFrameWithFileName("catBody3.png");  
    animation->addSpriteFrameWithFileName("catBody2-4.png");  
    animation->setDelayPerUnit(0.1f);//设置动画的间隔时间  
    animation->setRestoreOriginalFrame(true);//是否返回第一帧  
    mainsprite->runAction(CCRepeatForever::create(CCAnimate::create(animation)));

    3、直接传入一张大图,包含多个小图,生成动画

    CCTexture2D *pTexture=CCTextureCache::sharedTextureCache()->addImage("hero.png");  
    CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(0,0,32,32));  
    CCSpriteFrame *frame1=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32,0,32,32));  
    CCSpriteFrame *frame2=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(64,0,32,32));  
    CCSpriteFrame *frame3=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(96,0,32,32));  
    CCArray  *animFrames=CCArray::create();  
    CC_BREAK_IF(!animFrames);  
    animFrames->addObject(frame0);  
    animFrames->addObject(frame1);  
    animFrames->addObject(frame2);  
    animFrames->addObject(frame3);  
    CCAnimation *animation=CCAnimation::createWithSpriteFrames(animFrames,0.2f);  
    heroSprite0->runAction(CCRepeatForever::create(animate)); 
  • 相关阅读:
    Ubuntu 16 安装redis客户端
    crontab 参数详解
    PHP模拟登录发送闪存
    Nginx配置端口访问的网站
    Linux 增加对外开放的端口
    Linux 实用指令之查看端口开启情况
    无敌的极路由
    不同的域名可以指向同一个项目
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
    Redis 创建多个端口
  • 原文地址:https://www.cnblogs.com/damowang/p/4074409.html
Copyright © 2011-2022 走看看