2013-11-20 4 views
0

Я пытаюсь воспроизвести цикл анимации кадра навсегда, но после каждой игры я хотел бы отложить на некоторое время до следующего петля.Cocos2dx - воспроизведение анимации кадра навсегда, но пауза в течение нескольких секунд перед повторением

Вот конкретный код:

CCActionInterval *pAnimate = CCAnimate::create(m_pAnimationDebugSkill); 
    CCDelayTime *pDelayTime = CCDelayTime::create(3.0f); 
    CCRepeatForever *pRepeat = CCRepeatForever::create(CCSequence::createWithTwoActions(pAnimate, pDelayTime)); 
    m_pSpriteDebugSkillAnimation->runAction(pRepeat); 

Я ожидаю pAnimate играть, то pDelayTime удерживать в течение 3 секунд, затем pAnimate играть снова ... Но что происходит, pAnimate играет и повторяя навсегда ... pDelayTime не имеет никакого эффекта ...

У кого-нибудь есть идеи?

Вот полный код:

 // Skill button animation 
    m_pSpriteDebugSkillAnimation = CCSprite::createWithSpriteFrame(
     CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(s_szNameSpriteFrame[UI_BOARD_RUNES_ANIM_BTN_SKILL_0]) 
    ); 
    m_pSpriteDebugSkillAnimation->setAnchorPoint(ccp(0.5f, 0.5f)); 
    INT iNumFrames = UI_BOARD_RUNES_ANIM_BTN_SKILL_END - UI_BOARD_RUNES_ANIM_BTN_SKILL_START + 1; 
    CCArray *pAnimSkill = CCArray::create(); 
    for (INT i = 0; i < iNumFrames; i++) { 
     CCSpriteFrame *pFrame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(s_szNameSpriteFrame[UI_BOARD_RUNES_ANIM_BTN_SKILL_0+i]); 
     pAnimSkill->addObject(pFrame); 
    } 
    m_pAnimationDebugSkill = CCAnimation::createWithSpriteFrames(pAnimSkill, DEFAULT_TIME_ANIM); 
    m_pAnimationDebugSkill->setLoops(-1); 
    m_pAnimationDebugSkill->retain(); 
    CCActionInterval *pAnimate = CCAnimate::create(m_pAnimationDebugSkill); 
    CCDelayTime *pDelayTime = CCDelayTime::create(3.0f); 
    CCRepeatForever *pRepeat = CCRepeatForever::create(CCSequence::createWithTwoActions(pAnimate, pDelayTime)); 
    m_pSpriteDebugSkillAnimation->runAction(pRepeat); 

    CCSprite *pSpriteSkill = CCSprite::createWithSpriteFrame(
     CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(s_szNameSpriteFrame[UI_BOARD_RUNES_BTN_SKILL]) 
    ); 
    FLOAT fSpriteSkillWidth = pSpriteSkill->boundingBox().size.width; 
    FLOAT fSpriteSkillHeight = pSpriteSkill->boundingBox().size.height; 
    m_pSpriteDebugSkillAnimation->setPosition(ccp(fSpriteSkillWidth/2.0f, fSpriteSkillHeight/2.0f)); 
    pSpriteSkill->addChild(m_pSpriteDebugSkillAnimation); 
    //pSpriteSkill->setAnchorPoint(ccp(0.5f, 0.5f)); 
    //pSpriteSkill->setPosition(ccp(fScreenHalfWidth, 1100.0f)); 
    //this->addChild(pSpriteSkill); 
    m_pBtnDebugSkill = CCMenuItemSprite::create(pSpriteSkill, pSpriteSkill, pSpriteSkill, this, menu_selector(CGameScreen::onTouchSkillButton)); 
    m_pBtnDebugSkill->setPosition(ccp(fScreenHalfWidth, 1100.0f)); 
    m_pMenuRoot->addChild(m_pBtnDebugSkill); 

ответ

0

Вы можете попробовать запустить анимацию в функции:

void MyGame::runMyAnimation() 
{ 
    CCActionInterval *pAnimate = CCAnimate::create(m_pAnimationDebugSkill); 
    m_pSpriteDebugSkillAnimation->runAction(pAnimate); 
} 

и запустить этот код вместо:

CCDelayTime *pDelayTime = CCDelayTime::create(3.0f /* add the time the animation takes here*/); 
CCRepeatForever *pRepeat = CCRepeatForever::create(CCSequence::createWithTwoActions(pDelayTime, CCCallFunc::create(this,callfunc_selector(MyGame::runMyAnimation))); 

UPDATE

Возможно ваш код работает так:

  1. Начало анимации
  2. ждать в течение 3 секунд (в то время как анимация работает)
  3. Start анимация снова

Попробуйте добавить время ваша анимация занимает к времени задержки.

+0

Задержка места сначала, а затем после запуска анимации в последовательности. Он будет работать – Rama

0

проблема в том, что у вас установлены петли для m_pAnimationDebugSkill до -1.

m_pAnimationDebugSkill->setLoops(-1); 

это делает эту анимацию бег для бесконечна и, следовательно, часть задержки не выполняется ..

вам не нужно устанавливать петли на -1, если вы позже с помощью ccrepeatforever.

другое, что код выглядит нормально

Смежные вопросы