天天看點

cocos 2d 簡單動畫實作

動畫的主題是14張圖檔,一般來講需要找比較相似的圖檔連續的播放,以達
到一種迷惑人眼的效果,下面這段程式主要基于 Cocos 2d 遊戲開發平台
實作,中間涉及到了 聲音播放引擎, 以及一些 圖層 精靈的處理 。
           
#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 / , winSize.height / ));


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

    Vector<SpriteFrame *> aniframe;// 使用一個 Vector 存放 SpriteFrame 指針

    CCSprite *sprite;

    char str[];// 定義一個字元數組 用于存放 圖檔名稱

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

    }
    for(int i = ; i >= ; i--)
    {
        sprintf(str,"%d.jpg",i);
        CCSpriteFrame *frame = CCSpriteFrame::create(str,CCRectMake(,,,));
        if(i == )
        {
            sprite = CCSprite::createWithSpriteFrame(frame);
            sprite->setPosition(ccp(winSize.width / , winSize.height / ));
            addChild(sprite);
        }
        aniframe.insert(NULL,frame);
    }


    // 生成一個動畫實體,并将上面添加的圖檔放入其中    

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

    // 将動畫的實體放到一個動畫中去
    CCAnimate *animate = CCAnimate::create(animation);
    // 執行動畫
    sprite ->runAction(CCRepeatForever::create(animate));
    return true;
}
           

待續未完。。。。。。

繼續閱讀