cocos2dx 自定义动画

bool HelloWorld::init()

{

    //////////////////////////////

    // 1. super init first

    if ( !CCLayer::init() )

    {

        return false;

    }

////    添加4个精灵, 每个精灵用来标示一帧

//    CCSprite * sp1= CCSprite::create("crop1.png");

//    CCSprite * sp2= CCSprite::create("crop2.png");

//    CCSprite * sp3= CCSprite::create("crop3.png");

//    CCSprite * sp4= CCSprite::create("crop4.png");

 

    CCSprite * sp1= CCSprite::create("crop.png", CCRectMake(0, 0, 100, 86));

    CCSprite * sp2= CCSprite::create("crop.png", CCRectMake(100, 0, 100, 86));

    CCSprite * sp3= CCSprite::create("crop.png", CCRectMake(200, 0, 100, 86));

    CCSprite * sp4= CCSprite::create("crop.png", CCRectMake(300, 0, 100, 86));

//    设置一样的坐标

    sp1->setPosition(ccp(100, 180));

    sp2->setPosition(ccp(100, 180));

    sp3->setPosition(ccp(100, 180));

    sp4->setPosition(ccp(100, 180));

    

//    设置2-4帧不可见, 初始化时只显示第一帧

    sp2->setVisible(false);

    sp3->setVisible(false);

    sp4->setVisible(false);

    

//    添加到当前层中 tag 按照顺序0~3

    addChild(sp1,0,0);

    addChild(sp2,0,1);

    addChild(sp3,0,2);

    addChild(sp4,0,3);

    

//    每0.5s调用一次myUpdate(每0.5s切换一帧)

    schedule(schedule_selector(HelloWorld::myUpdate),0.5);

    

    

    return true;

}



void HelloWorld:: myUpdate(float dt)

{

    currentFrameIndex++;

    CCLOG("currentFrameIndex= %i",currentFrameIndex);

//    获取当前所有精灵

    CCArray*array= this->getChildren();

//    防止下标超过最大tag的精灵

    if (currentFrameIndex>=array->count()) {

        currentFrameIndex=0;

    }

//    隐藏所有的精灵

    for (int i = 0 ; i <array->count(); i++) {

        CCSprite*spt =(CCSprite*)this->getChildByTag(i);

        spt->setVisible(false);

    }

//    让下一帧显示出来

    CCSprite *sp = (CCSprite*)array->objectAtIndex(currentFrameIndex);

    sp->setVisible(true);

    

}

.CPP

.h

 

class HelloWorld : public cocos2d::CCLayer

{

public:

    // Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)

    virtual bool init();



    // there's no 'id' in cpp, so we recommend to return the class instance pointer

    static cocos2d::CCScene* scene();

    

    // a selector callback

    void menuCloseCallback(CCObject* pSender);



    // preprocessor macro for "static create()" constructor ( node() deprecated )

    CREATE_FUNC(HelloWorld);

//    定义一个变量用以标识当前显示的帧下标

    int currentFrameIndex;

//    自定义的更新函数

    void myUpdate(float dt);

};

 

你可能感兴趣的:(cocos2dx)