3.5中Button如何添加触摸事件?

我参照官方给的例程写了一个按键触摸事件,
backBtn->addTouchEventListener(CC_CALLBACK_2(HelpScene::backBtnClicked, this));

然后
void backBtnClicked(Ref *pSender, Widget::TouchEventType type);
void HelpScene::backBtnClicked(Ref *pSende, Widget::TouchEventType type){
if (type == Widget::TouchEventType::ENDED){
Director::getInstance()->replaceScene(TransitionFade::create(1.5f, MainMenuScene::createScene()));
}
}
这是回调函数的声明和实现,编译的时候没问题,但一旦执行到这边就会跳出一个断点,然后跳到一个C++std库中的functional函数里,请问这是什么问题呢。。。Button应该怎么添加触摸事件?还是说Button已经淘汰了,现在用别的?

:6::6::6::6::6::6:已解决。。。我发现原来是我的backBtn没有创建成功。。。

不知道你是用那个button的,我是用ui::Button类的,例子如下:

auto btnReturn = ui::Button::create();
btnReturn->setTag(DUDU_COCOS_TAG_PAUSE);
btnReturn->setTitleText(DUDU_COCOS_STR_PAUSE);
btnReturn->addClickEventListener(CC_CALLBACK_1(GuangScene::menuClickCallback,this));
btnReturn->setTitleColor(Color3B(255, 255, 128));
btnReturn->setTitleFontSize(DUDU_COCOS_FONTSIZE_MENU);
btnReturn->setPosition(Vec2(m_sizeVisible.width,0));
btnReturn->setAnchorPoint(Vec2(1.0f,0.0f));
addChild(btnReturn);

回调函数
void GuangScene::menuClickCallback(Ref * pSender)
{
if(pSender){
int itag = ((Node *)pSender)->getTag();
if(itag==DUDU_COCOS_TAG_PAUSE){
//返回
Director::getInstance()->popScene();
}else if(itag==DUDU_COCOS_TAG_ABOUT){
CCLOG(“DUDU_COCOS_TAG_MORE”);
CocosDenshion::SimpleAudioEngine::getInstance()->playEffect(“yeah.mp3”);
//FunJiSuanJieGuo();
}else{
CCLOG(“callback tag:%d”,itag );
}
}else{
CCLOG(“menuCallback Error!!”);
}
}

auto button = Button::create("button_n.png");
// 设置规模大小
button->setScale(1.8);
// 设置Button上显示的文本
button->setTitleText("Text Button");
// 设置Button上显示的文本的字体
button->setTitleFontName("微软雅黑");
// 设置Button上显示的文本的字体大小
button->setTitleFontSize(14);
// 设置Button的坐标位置
button->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));

/**
 添加触碰监听
 第一个参数是触发事件的对象
 第二个参数是触发事件的类型,分别为BEGAN、MOVED、ENDED和CANCELED
 */
button->addTouchEventListener(=](Ref* pSender,Widget::TouchEventType type)
{
    switch (type) {
        case Widget::TouchEventType::BEGAN:
            message->setString("触摸事件类型:BEGAN");
            break;
        case Widget::TouchEventType::MOVED:
            message->setString("触摸事件类型:MOVED");
            break;
        case Widget::TouchEventType::ENDED:
            message->setString("触摸事件类型:ENDED");
            break;
        case Widget::TouchEventType::CANCELED:
            message->setString("触摸事件类型:CANCELED");
            break;
        default:
            break;
    }
});