在cocos2d-x中触摸时禁用MenuItemLabel缩放功能

时间:2015-03-18 06:39:12

标签: cocos2d-x cocos2d-x-3.0

我在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);

标签已创建,并且它也在响应回调方法。 我面临的唯一问题是,每当我触摸标签时,它都会给我一个缩放/缩放效果,直到触摸不会结束。

我想禁用缩放/缩放效果。

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 !");
});