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);
};

 

转载于:https://www.cnblogs.com/linux-ios/archive/2013/04/08/3008465.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值