按下按钮时停止当前动画

时间:2014-06-06 10:39:02

标签: c++ xcode5 cocos2d-x cocos2d-x-2.x

我正在使用cocos2d-x在xcode中创建游戏。我是cocos2d-x的新手。

我使用CCControlButton创建了两个按钮,用于跳转&滑动。我为run&创建了动画。幻灯片使用相同的精灵名称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);
 }

1 个答案:

答案 0 :(得分:1)

设置标签以识别动画并使用stopActionByTag()停止动画。

e.g。

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

停止动画 -

man->stopActionByTag(10);

为动画标签创建宏。

愿这对你有所帮助。