Остановить текущую анимацию при нажатии кнопки вверх

Я создаю игру в xcode, используя cocos2d-x. Я новичок в cocos2d-x.

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

Для запуска я создал в 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

Решение

Установите тег, чтобы идентифицировать ваши анимации и остановить анимацию с помощью stopActionByTag ().

например

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

Чтобы остановить анимацию —

man->stopActionByTag(10);

Создать макрос для тегов анимации.

Пусть это поможет вам.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector