求个小白问题

我用studio 编辑了csb图片 然后图片里面的按钮我如何在代码里获得并且添加事件呢

非常感谢

您好,csb是一个由多个控件组合而成的节点类型。通常不会给这个节点添加事件。
如果您在节点中给某个按钮类型(或其他默认开启交互)的控件添加事件时,请参考以下步骤实现:

1:解析文件,还原为节点对象
Node* node = CSLoader::createNode(“ActionTimeline/boy_1.csb”);

2:获取到需要设置控件对象(按钮)

auto movebtn= dynamic_cast<Button*>node->getChildByName(“button”);
如果是多层次嵌套,请使用findChildByName方法获取。

3:添加事件监听
if(movebtn)
{
movebtn->addTouchEventListener(CC_CALLBACK_2(currentClass::touchEvent, this));//currentClass::touchEvent为当前回调方法名
}

4:实现事件处理

switch (type)
{
case Widget::TouchEventType::BEGAN:
do something
break;

    case Widget::TouchEventType::MOVED:
        do something
        break;
        
    case Widget::TouchEventType::ENDED:
     do something
        break;
        
    case Widget::TouchEventType::CANCELED:
       do something
        break;
        
    default:
        break;
}

getChildByName / getChildByTag 然后传控件名或者逻辑标签。

C++下需要转成对应的类型来用。
控件的类型可以用getDescription 取出来看。(C++11有其他方法-RTTI,这个自己翻资料)
然后用dynamic_cast转成对应的类型。

如你说的按钮:
auto btn = dynamic_cast<Button*>(node->getChildByName(button_name));
button->addTouchEventListener(CC_CALLBACK_2(myClass::touchEvent, this));

这些都可以在引擎目录/test/ 下的工程找到。

谢谢!~~~~~

非常感谢~!