cocostudo里的按钮加载后,为什么不能响应事件啊?是BUg吗?不想回答的不要进来看

bool LogoLayer::init()
{

auto render = (ComRender*)(root->getChildByTag(100)->getComponent(“GUIComponent”));
Widget widget = (Widget)(render->getNode());
Button* loginBtn =(Button*)(ui::Helper::seekWidgetByName(widget, “btn_start”));
//
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = ](Touchtouch,Eventevent)
{
return true ;
};

listener->onTouchEnded = ](Touchtouch,Eventevent){
auto location = touch->getLocation();
auto target =event->getCurrentTarget();
auto s = target->getChildByTag(101);
};

_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, btn); //事件调度器
。。。。。。。。。。
}

return true;
}

------------------ 为什么点了按钮一点反应也没有,断点都跳不到 onTouchBegan 或 onTouchEnded 里面

eventDispatcher->addEventListenerWithSceneGraphPriority(listener, btn); btn换成 this也不进断点

人冷心更冷,希望坛主双休尽快结束中…

你是不是这个layout上还有个panel 或者layout的什么的,而且交互那个打勾了,他就传不到下面的按钮了。

用btn->addTouchEventListener这个添加点击事件,这个试试

addEventListenerWithSceneGraphPriority时指定的对象并不是说点击该对象才会触发触摸事件~
指定对象的意思是:当前监听的触摸事件优先级和指定的对象一致(一致这个词可能用得不太准确),以及可以在触摸事件发生时获取到这个对象(auto target =event->getCurrentTarget(); )

然后,你的按钮本身也是有一个触摸事件的,按钮本身的触摸事件,比你此时添加的触摸监听优先级要高,所以你点击按钮就会触发按钮的触摸事件。
你点击按钮以外的地方才能触发你添加的那个触摸监听~

(我被楼主的标题深深地吸引了,要是我点进来了不懂回答怎么办…)

你好,目前UI系列的空间跟CC系列控件的用法还是稍有区别的,如果CC系列,每种点击类型都会有单独的回调,但是UI系列的点击所有触摸回调都是走一个方法。
看下这个示例。

void classssssss::touchEvent(CCObject *pSender, TouchEventType type )
{
//点击结束事件
if (type == TOUCH_EVENT_ENDED)

哈,不要灰心,论坛有很多资料可以用,比如这里http://www.cocoachina.com/bbs/read.php?tid=194293
看完多数基本操作都会了,目前正在增加支持人员,相信很快就能提高大家的问题解决速度了。

谢谢你的回复,那你说说我的是哪里有问题,怎么解决撒?

为什么从来没有任何教程或资料提到ui里的按钮和cc里的按钮的事件监听方式 不一样?那哪个更好呢?,关键是我用 addTouchEventListener 会一个劲报否决,很不爽啊

看下5楼就知道了。

推荐使用UI系列控件,CC系列的控件后续会停止维护。

方法最新是推荐这个方法,楼上说的是可以用,但是最新的不推荐了。
CC_DEPRECATED_ATTRIBUTE void addTouchEventListener(Ref* target,SEL_TouchEvent selector);
void addTouchEventListener(ccWidgetTouchCallback callback);

设置widget->setTouchEnabled(false);注册的触摸监听就能响应到

谢谢各位,坛主说用 addTouchEventListener ,虽然被否决了,但仍要用它,ui里的控件事件方式和cocos2dx里的控件的事件方式是不一样的

准确的说是参数被否决了,而不是方法被否决了。