2014-06-06 44 views
0

我使用cocos2d-x在xcode中創建遊戲。我是cocos2d-x的新手。當新聞發佈按鈕時停止當前動畫

我創建了兩個按鈕,使用CCControlButton跳轉&幻燈片。我創建了運行&幻燈片的動畫,並使用名爲man的相同精靈名稱。

對於運行我創建在init()&幻燈片我創建了一個單獨的函數調用rotate.when我按下幻燈片按鈕,幻燈片動畫運行&當我釋放運行動畫正在運行。

,當我拿着滑動按鈕幻燈片動畫應該保持幻燈片&當我釋放滑動按鈕,幻燈片動畫應停止&運行動畫應該運行,但是當釋放滑動按鈕,跳轉按鈕不起作用,因爲我給的條件爲只有if(man->numberofrunningaction()==1)它應該跳。

當我按下幻燈片時,動作數量正在增加。任何人都請幫我找到解決辦法。

我使用下面的代碼跳,幻燈片動畫&運行阿尼姆..

void PlayScene::rotate() 
    { 
    anim1=CCAnimation::create(); 
    anim1->addSpriteFrameWithFileName("11.png"); 
    anim1->addSpriteFrameWithFileName("11.png"); 
    anim1->addSpriteFrameWithFileName("11.png"); 
    anim1->setLoops(4); 
    anim1->setDelayPerUnit(0.05f); 
    man->runAction(CCAnimate::create(anim1)); 
    man->setPosition(ccp(winwsize/5.5,winhsize/2.2)); 
    CCRotateBy *rot=CCRotateBy::create(1, 0.000000001); 
    man->runAction(rot); 
    } 

init() 
man=CCSprite::create(); 
man->retain(); 

anim=CCAnimation::create(); 
anim->retain(); 

anim->addSpriteFrameWithFileName("1.png"); 
anim->addSpriteFrameWithFileName("2.png"); 
anim->addSpriteFrameWithFileName("3.png"); 
anim->addSpriteFrameWithFileName("4.png"); 
anim->addSpriteFrameWithFileName("5.png"); 
anim->addSpriteFrameWithFileName("6.png"); 
anim->addSpriteFrameWithFileName("7.png"); 
anim->addSpriteFrameWithFileName("8.png"); 
anim->addSpriteFrameWithFileName("9.png"); 
anim->setLoops(-1); 
anim->setDelayPerUnit(0.05f); 
man->runAction(CCAnimate::create(anim)); 
man->setPosition(ccp(winwsize/5.5,winhsize/2.2)); 
this->addChild(man,1); 

creating button for jump & slide. 

    CCControlButton *rotate = CCControlButton::create(CCScale9Sprite::create("jump1.png")); 
rotate->setAdjustBackgroundImage(false); 
rotate->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 70,70)); 
rotate>addTargetWithActionForControlEvents(this,cccontrol_selector 
    (PlayScene::jumpfun),CCControlEventTouchDown); 
addChild(rotate, 3); 

CCControlButton *jumpbutton=CCControlButton::create(CCScale9Sprite::create("slide2.png")); 
jumpbutton->setAdjustBackgroundImage(false); 
jumpbutton->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 250,70));  

jumpbutton->addTargetWithActionForControlEvents(this, 
cccontrol_selector(PlayScene::rotate),CCControlEventTouchDown); 
jumpbutton->addTargetWithActionForControlEvents(this, cccontrol_selector 
(PlayScene::buttonup),CCControlEventTouchUpInside); 
    addChild(jumpbutton, 3); 

void PlayScene::buttonup() 
{ 
anim1->setLoops(0); 
} 
+0

man-> stopActionByTag(10); – user3682177

+0

在旋轉功能ani = CCAnimate :: create(anim1); ani-> setTag(10); man-> runAction(ani); – user3682177

回答

1

設置標籤來識別您的動畫和使用stopActionByTag停止動畫()。

例如

CCAnimate *an = CCAnimate::create(animation); 
an->setTag(10); 
man->runAction(an); 

要停止動畫 -

創建動畫標籤宏。

願這幫助你。

+0

感謝您的回答,但無法設置標籤。由於它沒有顯示CCAnimation中指定的成員。 – user3682177

+0

如果您在嘗試使用man-> stopAllActions()來停止sprite的所有操作,並只運行您想要的動畫,例如幻燈片動畫或運行動畫 – Viper