Cocos2dx 3.2 触摸问题

Cocos2dx中的触摸问题。我现在想实现的是对一个sprite添加监听。
我创建精灵按钮类,用了上面的方法添加了监听:

bool RoleButton::initListener()
{
    EventListenerTouchOneByOne* t_listener = EventListenerTouchOneByOne::create();
    t_listener->onTouchBegan = CC_CALLBACK_2(RoleButton::onTouchBegan,this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(t_listener,this);
    return true;
}

现在的问题是,无论我点击屏幕的什么,都会触发监听事件。我想要的是点击这个精灵,响应这个精灵的监听事件。
不太熟悉,望解答。如果可以深层解刨,感激不尽。

尝试在场景里面直接创建精灵role_model,然后:
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, role_model);
问题依旧存在。

通过tag来判断点击某个精灵

用Tag标记了精灵。但是现在我即使没有点击精灵(点击屏幕的任何区域,都会响应精灵的监听函数),event->getCurrentTarget()->getTag() 还是会获得精灵。

刚学 不懂 帮顶

最后,我用containsPoint()方法来处理这个问题。感觉不妥,但是逻辑好多了。(ps:我以前用的是quick lua…)

刚学不懂帮顶

将这个触摸当成一个属性添加到精灵上去

“现在的问题是,无论我点击屏幕的什么,都会触发监听事件。我想要的是点击这个精灵,响应这个精灵的监听事件。”

触发监听事件是对的,因为引擎不知道点击的位置是否是你需要的,只能你自己来做判断这个点击你是需要怎么处理,你看下Menu的源代码,也是自己做判断是否点击到了自己的按键,如果点击到了就坐相应操作,没点击到就继续往下传。

_eventDispatcher this的一个保护函数,而不是sprite 。所以我想,如果想实现sprite触摸,你试试可以把sprite 写个类,然后触摸注册在sprite类里面