2d-x2.2.2版本更新共享贴

2.2.2对接口做了不小的改动,移除了一些遗留的函数,所以这里做一个统一的帖子,大家可以把遇到的改变都放到这个帖子以分享给大家学习。

希望大家一起参与:14::14::14::14:

UI部分变化比较大,移除了原来的"UI"开头的类型名称,为了兼容原来的程序,目前做了别名映射,但是希望大家尽量使用新的类名:

新的类名在这个文件里:

typedef cocos2d::gui::Layout UIPanel;
typedef cocos2d::gui::Layout UILayout;
typedef cocos2d::gui::Widget UIWidget;

typedef cocos2d::gui::LayoutParameter UILayoutParameter;
typedef cocos2d::gui::Margin UIMargin;

typedef cocos2d::gui::ListView UIListView;
typedef cocos2d::gui::PageView UIPageView;
typedef cocos2d::gui::ScrollView UIDragPanel;
typedef cocos2d::gui::ScrollView UIScrollView;
typedef cocos2d::gui::Button UIButton;
typedef cocos2d::gui::Button UITextButton;
typedef cocos2d::gui::CheckBox UICheckBox;
typedef cocos2d::gui::ImageView UIImageView;
typedef cocos2d::gui::Label UILabel;
typedef cocos2d::gui::LabelAtlas UILabelAtlas;
typedef cocos2d::gui::LabelBMFont UILabelBMFont;
typedef cocos2d::gui::LoadingBar UILoadingBar;
typedef cocos2d::gui::Slider UISlider;
typedef cocos2d::gui::TextField UITextField;
typedef cocos2d::gui::TouchGroup UILayer;

typedef cocos2d::gui::LinearGravity UILinearGravity;
typedef cocos2d::gui::RelativeAlign UIRelativeAlign;
typedef cocos2d::gui::LayoutParameter UILayoutParameter;
typedef cocos2d::gui::LinearLayoutParameter UILinearLayoutParameter;
typedef cocos2d::gui::RelativeLayoutParameter UIRelativeLayoutParameter;

整合了四个控件:UIlable和uitextarea合并到lable,UIbutton和UITextbutton合并到button里

Widget 中的 addReleaseEvent删除 需要统一使用addTouchEventListener

新版本用了,编辑器CPU占用低了不少,赞一个,但是,你们接口改的太失败!!
UIWidget 的 getChildByName 没有了 变成 TouchGroup 的getWidgetByName 你们知道就这一个变化坑了我几个小时
唉,你们赶紧把结构做好了,别再来回改了,再不行我也放弃了

这个是一个过渡,之前ui*****系列类型会与ios冲突,这个是早晚得换的,更新后就不会换了

名称冲突的问题是CS2DX历史问题,肯定得改,但是不影响你们对ui的结构设计,现在取子子控件的方法你们肯定还得改,与其不停的改,还不如将这个问题作为重点一次解决掉,不然麻烦的不仅是你们啊

哦,您说的事getchildbyname方法么?欢迎提意见

意见算不上,只是像对于取子控件方法这种比较常用的方法和接口,最好能向下兼容一下,等积累到一定程度了再做迁移代码的工作,这样我们开发者也能轻松点,不管怎么说,还是谢谢你们提供这些开发工具,希望能做的更好

好的,谢谢支持,我们会不断努力的

请问json加载速度的问题解决了嘛?如果没有解决的话是否考虑使用rapidjson

— Begin quote from ____

引用第4楼hanrea于2014-01-08 17:22发表的 回 3楼(joechenq) 的帖子 :
哦,您说的事getchildbyname方法么?欢迎提意见 http://www.cocoachina.com/bbs/job.php?action=topost&tid=179309&pid=870908

— End quote

我也被这个函数坑了
之前的getChildByName是递归实现的,现在不能递归查找子节点了

请问应该用哪个函数作为替代,用来递归查找子控件?

在论坛下载帖里面,下面有更新日记,看看吧,提了这么一句的

2.2.2版本已经替换了,未来会考虑使用bin文件来解决数据解析慢的问题。

Widget 中的 addReleaseEvent是被删除了吗 需要统一使用addTouchEventListener?

— Begin quote from ____

引用第11楼harris于2014-01-09 10:58发表的 :
Widget 中的 addReleaseEvent是被删除了吗 需要统一使用addTouchEventListener? http://www.cocoachina.com/bbs/job.php?action=topost&tid=179309&pid=871271

— End quote

恭喜你,我重新实现了一遍这个函数,就是把老代码里的这个函数拷到新版本里去

— Begin quote from ____

引用第11楼harris于2014-01-09 10:58发表的 :
Widget 中的 addReleaseEvent是被删除了吗 需要统一使用addTouchEventListener? http://www.cocoachina.com/bbs/job.php?action=topost&tid=179309&pid=871271

— End quote

我用2.2.0的时候,看到cocostudio的一堆函数就写着会被移除,所以我就都没用那些函数了

bool TouchGroup::checkTouchEvent(Widget root, CCTouch touch, CCEvent* pEvent)
{
ccArray* arrayRootChildren = root->getChildren()->data;
int length = arrayRootChildren->num;
for (int i=length-1; i >= 0; i–)
{
Widget* widget = (Widget*)(arrayRootChildren->arr*);*
if (checkTouchEvent(widget, touch, pEvent))
{
return true;
}
}
bool pass = root->onTouchBegan(touch, pEvent);
if (root->_hitted)
{
m_pSelectedWidgets->addObject(root);
return true;
}
return pass;
}

话说,这个Children里面也会有非Widget的Node吧?不用判断吗

对的,原来有些函数都被移除了。

— Begin quote from ____

引用第9楼pz789as于2014-01-09 08:46发表的 回 8楼(flysec) 的帖子 :
在论坛下载帖里面,下面有更新日记,看看吧,提了这么一句的 http://www.cocoachina.com/bbs/job.php?action=topost&tid=179309&pid=871101

— End quote

多谢,找到了,是用UIHelper里的函数来查找了

— Begin quote from ____

引用第9楼pz789as于2014-01-09 08:46发表的 回 8楼(flysec) 的帖子 :
在论坛下载帖里面,下面有更新日记,看看吧,提了这么一句的 http://www.cocoachina.com/bbs/job.php?action=topost&tid=179309&pid=871101

— End quote

多谢,找到了,是用UIHelper里的函数来查找了

http://www.cocoachina.com/bbs/read.php?tid=154886

各们同学~~我觉得还是先看一下 更新文档吧!你们说的哪个 getChilebyname 文档里早就有了!先看文档再改现在的程序比较靠谱

为什么不用protobuf呢?