Cocos2d-x我不知道如何给动画延迟

时间:2013-05-05 22:52:30

标签: animation delay cocos2d-x

现在,我确实喜欢这个。 12个动画同时移动。

(抱歉,我无法上传图片。所以,我做了。|〜|是一行,这是3x4矩阵)

| 1 1 1 |
| 1 1 1 |
| 1 1 1 |
| 1 1 1 |

但是,我想这样。

ex)12个pannel foward命令左上角1,2,3,...,12

因此,动画会移动1,2,3个时间段,而不是同一时间。

| 1 2 3 | //喜欢这个。

我确实在网上搜索并添加了一些内容。但是,我无法改变这一点。我该怎么办呢。

这是我的代码。

    CCSprite* maker_sh = CCSprite::create("img/marker_sh.jpg") ;
    CCAnimation* sh_ani = CCAnimation::create() ;
    sh_ani -> setDelayPerUnit(0.05) ;

    for(int i = 0 ; i < 24 ; i++)
    {
            int index = i % 5 ;
            int rowIndex = i / 5 ;

            sh_ani -> addSpriteFrameWithTexture(maker_sh -> getTexture(), CCRectMake(index * 120, rowIndex * 120, 120, 120)) ;
    }
    CCAnimate* animate[12] ;
    CCAction* rep[12] ;

    for(int i = 0 ; i < 12 ; i++)
    {
            animate[i] = CCAnimate::create(sh_ani) ;
            rep[i] = CCRepeatForever::create(animate[i]) ;
    }

    int cnt = 0 ;
    CCSprite* test[12] ;
    for(int i = 3 ; i > -1 ; i--)
            for(int j = 0 ; j < 3 ; j++)
            {
                    cnt++ ;
                    test[j + (3 - i) * 3] = CCSprite::createWithTexture(maker_sh -> getTexture(), CCRectMake(0, 0, 120, 120)) ;
                    test[j + (3 - i) * 3] -> setPosition(ccp(j * 125 + 120, i*125 + 75)) ;
                    this -> addChild(test[j + (3 - i) * 3]) ;
                    test[j + (3 - i) * 3] -> runAction(rep[j + (3 - i) * 3]) ;
                    CCLog("%d", cnt) ;
            }

1 个答案:

答案 0 :(得分:0)

不是一个聪明的方法,只希望这会给你一些帮助:)

CCAnimate* animate[12];
CCAction* rep[12];

float interval = 3.f;//set this value that you need

for (int i=0; i<12; i++)
{
    CCDelayTime* delay = CCDelayTime::create(i*interval);
    animate[i] = CCAnimate::create(sh_ani);
    CCAction* action = CCRepeatForever::create(animate[i]) ;

    rep[i] = CCSequence::create(delay,action);
}