cocos 2d 简单动画实现

前端之家收集整理的这篇文章主要介绍了cocos 2d 简单动画实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
动画的主题是14张图片,一般来讲需要找比较相似的图片连续的播放,以达
到一种迷惑人眼的效果,下面这段程序主要基于 Cocos 2d 游戏开发平台
实现,中间涉及到了 声音播放引擎, 以及一些 图层 精灵的处理 。
添加背景图片
    CCSprite* bk = CCSprite::create("1.jpg");// 注意此处的文件需放到 项目的Resource 目录下
    addChild(bk);
    bk->setPosition(ccp(winSize.width / 2,winSize.height / 2));


    //添加背景音乐
    CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("吻别.mp3",true);

    Vector aniframe;// 使用一个 Vector 存放 SpriteFrame 指针

    CCSprite *sprite;

    char str[20];// 定义一个字符数组 用于存放 图片名称

    for(int i = 1; i <= 14; i++)
    {
        sprintf(str,"%d.jpg",i);
        SpriteFrame *frame = SpriteFrame::create(str,CCRectMake(0,639,423));
        if(i == 1)
        {
            sprite = CCSprite::createWithSpriteFrame(frame);
            sprite->setPosition(ccp(winSize.width / 2,winSize.height / 2));
            addChild(sprite);
        }
        aniframe.insert(NULL,frame);

    }
    for(int i = 14; i >= 1; i--)
    {
        sprintf(str,i);
        CCSpriteFrame *frame = CCSpriteFrame::create(str,frame);
    }


    // 生成一个动画实体,并将上面添加图片放入其中    

    CCAnimation *animation = CCAnimation::createWithSpriteFrames(aniframe,0.2f);// 没0.2s切换一次

    // 将动画的实体放到一个动画中去
    CCAnimate *animate = CCAnimate::create(animation);
    // 执行动画
    sprite ->runAction(CCRepeatForever::create(animate));
    return true;
}" data-snippet-id="ext.e1d34a274b8c8dbe749b28159e674fea" data-snippet-saved="false" data-csrftoken="5m90r07w-540ALZNYZGoKyYsm8iTy35Yq2Vs" data-codota-status="done">#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();

    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }

    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    //添加背景图片
    CCSprite* bk = CCSprite::create("1.jpg");// 注意此处的文件需放到 项目的Resource 目录下
    addChild(bk);
    bk->setPosition(ccp(winSize.width / 2,winSize.height / 2));


    //添加背景音乐
    CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("吻别.mp3",true);

    Vector<SpriteFrame *> aniframe;// 使用一个 Vector 存放 SpriteFrame 指针

    CCSprite *sprite;

    char str[20];// 定义一个字符数组 用于存放 图片名称

    for(int i = 1; i <= 14; i++)
    {
        sprintf(str,"%d.jpg",CCRectMake(0,0,639,423));
        if(i == 1)
        {
            sprite = CCSprite::createWithSpriteFrame(frame);
            sprite->setPosition(ccp(winSize.width / 2,winSize.height / 2));
            addChild(sprite);
        }
        aniframe.insert(NULL,frame);

    }
    for(int i = 14; i >= 1; i--)
    {
        sprintf(str,frame);
    }


    // 生成一个动画实体,并将上面添加图片放入其中 

    CCAnimation *animation = CCAnimation::createWithSpriteFrames(aniframe,0.2f);// 没0.2s切换一次

    // 将动画的实体放到一个动画中去
    CCAnimate *animate = CCAnimate::create(animation);
    // 执行动画
    sprite ->runAction(CCRepeatForever::create(animate));
    return true;
}

待续未完。。。。。。

猜你在找的Cocos2d-x相关文章