cocos Stdio中创建图层,根节点在cocos stdio里面显示是 类型:__LayerRGBA 为什么发布出来的是 Node ,这导致 在cocos2dx3.6代码中加载 CSLoader::createNode(“ui/name.csb”); 后返回的是 Node,而不 是__LayerRGBA 。 类型不对。 这个会在使用listview的时候 鼠标事件会出问题(如果加的是Node的话) 无法interrupt,因为不是widget的类型. 这样listview中点击的Item会截获事件,导致listview不能滚动。还请回复一下这个的解决方案。
第二个问题我是用粗暴的方法解决的,改uiwidget源码,版本3.8
void Widget::propagateTouchEvent(cocos2d::ui::Widget::TouchEventType event, cocos2d::ui::Widget sender, cocos2d::Touch touch)
{
Widget widgetParent = getWidgetParent();
if (widgetParent)
{
widgetParent->_hittedByCamera = _hittedByCamera;
widgetParent->interceptTouchEvent(event, sender, touch);
widgetParent->_hittedByCamera = nullptr;
}
else
{
auto pNode = getParent();
Widget pWidget = nullptr;
while (pNode)
{
pWidget = dynamic_cast<Widget*>(pNode);
if (pWidget)
{
break;
}
else
{
pNode = pNode->getParent();
}
}
if (pWidget)
{
pWidget->interceptTouchEvent(event, sender, touch);
}
}
}