本是怀着激动的心情摒弃cocosbuilder, 转为用cocos studio
结果发现完全无法胜任工作
cocos studio 缺点:
- 启动速度极慢 (吃多少内存没有详细去看)
- 功能很多, 但是真正提供实用的细节完全没有
- bug, 会导致项目假死, 升级后工程一直假死, 重新打开也一样
- bug, 会导致操作时崩溃
- 强推更新, 这个软件去年接触过一次, 就因为不稳定删掉了, 而它并不给你带来宽容, 升级都是强制性, 虽然可以点x, 但是底部按钮只有一个”升级”, 点了各种问题就出来了, 就上面说的假死问题
- 自定义触碰,点击事件构造起来极其复杂, 需要两个类, 以及一个单例来实现, 之前写我参照英文, 中文官方代码, 以及demo代码, 都没有实现成功, 官方是否应该反省一下这个问题的严重性, 你既然很多内容都简化了, 为什么偏偏和自己的csb文件对接, 都能这么费劲
- csb读取后的查找子元素的方式居然用递归遍历查找, 多么浪费效率, 为了找一个变量对象, 遍历整个csb的树形结构, 官方到底想什么呢
cocosbuidler 缺点:
- 兼容性差
- 很久未更新, 可以去github搜 cocosbuilder_quick3.3版本, 这个是国人基于cocosbuilder3beta开发支持更新后的cocosstudio, 我试用了一下, 和官方beta4版没什么区别
应对两个不同构建对象的方法, 我使用
Map<string, Node*> Vars;
来实现, 这个代码放到捕捉ccb/csb内创建的对象,
在子类创建内部类:
class Keys:public KeyBoard{
public:
string txt_title = "txt_title";
string txt_content = "txt_content";
string bt_yes = "bt_yes";
string bt_no = "bt_no";
string menu = "menu";
string mcContent = "mcContent";
string mcTitle = "mcTitle";
};
Keys keys;
然后通过
auto txtContent = dynamic_cast<Label*>(Vars.at(keys.txt_content));
来调用对象
本身Map是支持自动对Ref对象retain和release的, 其次不需要对每个ccb/csb创建的对象都建立内部私有变量, 这样很麻烦, 也很不好查找
总之, cocos studio 问题太多了, 官方不注重细节和性能, 只为了堆技术堆功能, 最后舍弃的人会越来越多, 另外值得一提的是, cocos2dx 整天更新apii名称, 今天用shareInstance(), 明天用getInstance(), 后天集成到Director里面去, 各种帮助, 注释是过时的, 真是折腾够了, 下一步开发的时候注意点, 有计划的进行并且能维持广大开发者的良性发展.