【教程】“回调特性”的使用教程(c++语言)

怎么这个代码会崩溃,MainScene.csb在res目录下了,auto n = CSLoader::createNode(“MainScene.csb”); 用的Xcode,3.3rc2,cocostudio2.0.5:6::6::6:

有什么错误提示没有

没有什么提示,就是崩溃那种绿色的Thread 1:EXC_BAD_ACCESS(code=1,address=0x0) 然后我发现在studio里边把Scene高级属性里的自定义类那栏清空就可以运行,写上类名就刚运行就崩溃

我勒个去!我发现了。。。。原来我 instance->registReaderObject里边第一个形参多了个空格:8::8::8::8:

创建工厂类后,链接的时候失败了
error LNK2001: 无法解析的外部符号 “public: virtual struct flatbuffers::Offset __thiscall cocostudio::NodeReader::createOptionsWithFlatBuffers(class tinyxml2::XMLElement const *,struct flatbuffers::FlatBufferBuilder *)” (?createOptionsWithFlatBuffers@NodeReader@cocostudio@@UAE?AU?$Offset@VTable@flatbuffers@@@flatbuffers@@PBVXMLElement@tinyxml2@@PAUFlatBufferBuilder@4@@Z)

大家有遇到过吗

我觉的自己写回调也挺简单的

是啊,理想的自动绑定是类似oc配合sprite-builder那样,而不是cocosbuilder配合2dx的样子!

这是什么情况 。

包含头文件就可以了

instance->registReaderObject(“MyClassReader”, (ObjectFactory::Instance)MyClassReader::getInstance);
auto node = CSLoader::createNode(“MyClass.csb”);

createNode并没有进入重载的MyClassReader里面重载函数。
跟踪代码:
在Node* CSLoader::nodeWithFlatBuffers(const flatbuffers::NodeTree *nodetree)这个函数里面
std::string classname = nodetree->classname()->c_str();里面这个获取的名字Node,并木有MyClass,所以无法创建自己的Node。
nodetree又是从csb文件读取过来的~。so,怎么破,怎么弄

编辑器里边有没有写自定义类名吗?

太复杂啦!!!
每天会写类似的代码,这样写太别扭了!
对于我们上层,只须告诉引擎,我想响应哪个控件哪个事件。
registerEvt(const std::string& widgetName, int evtId, std::function<> callback);

你解决了没有? 我也遇到了。。。

有个bug, 自定义类的第一控件接受不到touch事件.
自定义类,设置touch回调,把2个这个自定义的控件加入到一个层中,发现第一控件收不到touch回调。

说了半天 我想问 这跟反射有毛线关系 直接触发事件的时候 对外抛出一个事件 然后使用者注册相关的事件并接收即可 完全不需要这么麻烦的封装 太反人类的

同问!我也遇到了这个问题。。。用的2dx3.3版本

无法解析的外部符号 "public: virtual struct flatbuffers::Offset __thiscall cocostudio::NodeReader::createOptionsWithFlatBuffers(class tinyxml2::XMLElement const *,struct
介是怎么回事啊?

flatbuffers::Offset 的问题应该是和包含其他文件有关,将例子里面的MyClassReader放到独立文件即可。不知是否引入了其他命名空间引起冲突。

这种办法真麻烦而且恶心

MyClassReader不是独立文件么= =
上边是两个类4个文件的,求详细说明