我是cocos2d-x的新手,现在我正在使用cocos2d-x在xcode中开发游戏。在我的游戏中,我希望我的精灵在按下按钮时旋转,但它在按钮释放时旋转。以下是我使用的代码。请帮我找到这个。
CCMenuItemImage *rotate = CCMenuItemImage::create(
"rotateround.png",
"rotateround.png",
this,
menu_selector(PlayScene::rotate) );
rotate->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 70,70) );
void gamescene::rotate()
{
anim1=CCAnimation::create();
anim1->addSpriteFrameWithFileName("rotate.png");
anim1->addSpriteFrameWithFileName("rotate1.png");
anim1->addSpriteFrameWithFileName("rotate2.png");
anim1->addSpriteFrameWithFileName("rotate3.png");
anim1->addSpriteFrameWithFileName("rotate4.png");
anim1->setLoops(3);
anim1->setDelayPerUnit(0.7f);
man->runAction(CCAnimate::create(anim1));
}
答案 0 :(得分:1)
这是CCMenu
及其项目的工作方式 - 当用户释放触摸时,您将获得回调。如果您想要检测用户何时触及,则应使用CCControlButton
。
示例:
CCControlButton *gzk = CCControlButton::create(CCScale9Sprite::create("res/FB.png"));
gzk->setAdjustBackgroundImage(false);
gzk->setTag(TAG_FB);
gzk->setPosition(ccp(31, 517));
gzk->addTargetWithActionForControlEvents(this, cccontrol_selector(MyClass::touch), CCControlEventTouchDownInside); // this line is the most interesting for you
addChild(gzk, 10);
在示例中,当用户触摸按钮时将调用回调。 CCControlButton
通常更好 - 您可以addTargetWitchAction
针对具有不同回调的不同事件。
编辑:跟进评论 - “现在它继续旋转,即使我释放按钮。在释放按钮时停止动作。”
这是因为您在按下按钮时会执行操作,但不会以任何方式绑定它。这意味着您必须特别添加另一个操作并回调您的按钮,例如:
gzk->addTargetWithActionForControlEvents(this, cccontrol_selector(MyClass::endTouch), CCControlTouchUpInside);
gzk->addTargetWithActionForControlEvents(this, cccontrol_selector(MyClass::endTouch), CCControlTouchUpOutside);
而endTouch()
看起来应该是这样的:
void MyClass::endTouch() {
man->stopAllActions(); //to stop all actions running on a node
------ or ------
man->stopAction(anim1); //if you kept the reference to the action
------ or ------
man->stopActionbyTag(tag); // if you assigned a tag to your action
}
希望这有帮助!