我在cocos2d-x 3.3中工作,这与v3.0之后的任何版本类似。 我想创建一个标签,其中文本的数量可以变化,并且在触摸时也需要回调。 我是按照以下方式创建的:
Label* questionLabel = Label::create("", "Dimbo Regular.ttf", 36);
questionLabel->setColor(Color3B(190, 30, 45));
questionLabel->setDimensions(900, 120);
questionLabel->setHorizontalAlignment(TextHAlignment::LEFT);
questionLabel->setVerticalAlignment(TextVAlignment::CENTER);
questionLabel->setString(questionString);
MenuItemLabel* questionMenuLabel=MenuItemLabel::create(questionLabel, CC_CALLBACK_1(PreAssessment::questionPressedCallback, this));
questionMenuLabel->setPosition(520,516.5);
auto menu=Menu::create(questionMenuLabel,NULL);
menu->setPosition(Vec2::ZERO);
addChild(menu,1);
标签已创建,并且它也在响应回调方法。 我面临的唯一问题是,每当我触摸标签时,它都会给我一个缩放/缩放效果,直到触摸不会结束。
我想禁用缩放/缩放效果。
答案 0 :(得分:1)
您需要继承MenuItemLabel类并覆盖 selected()方法
class NoZoomMenuItemLabel : public MenuItemLabel{
public:
static NoZoomMenuItemLabel *create(Node*label, const ccMenuCallback& callback);
virtual void selected() override;
};
// .cpp
NoZoomMenuItemLabel * NoZoomMenuItemLabel::create(Node*label, const ccMenuCallback& callback)
{
NoZoomMenuItemLabel *ret = new (std::nothrow) NoZoomMenuItemLabel();
ret->initWithLabel(label, callback);
ret->autorelease();
return ret;
}
void NoZoomMenuItemLabel::selected()
{
// do nothing
}
用法:
NoZoomMenuItemLabel *questionMenuLabel = NoZoomMenuItemLabel::create(questionLabel, [](Ref *pSender){
log("Click !");
});