1.ui名字空间的gui主要用于cocostudio配合,extension里面目前貌似则只能手写。但如果我小游戏都是手写gui,那官方是推荐使用新的ui名字空间里面的控件吗?
最早在2.x 的时候, cocostudio 的 UI也是放在 extenstion 目录的。 但是对于一个游戏引擎来说, ui 是非常重要且核心的东西, 所以决定 把它移到 core 里面,并且给了一个名字空间 cocos2d::ui。
给新名字空间的目的主要也是为了防止名字冲突。 如果是手写UI, 如果 UI 比较复杂, 推荐使用 ui 名字空间下的控件,因为其它 ui 组件基本上没有再维护了。
2.保留extension的目的只是为了和旧代码兼容吗?以后会删除吗?为何不在升级3.0的时候重写extension的gui,而要假如一个新的ui名字空间?这样有什么比较大的优势?
保留 menu/menuItem, cocosbuilder 的 GUI 以及 extension 的 GUI 主要是为了代码兼容。 后续会考虑在4.0的时候统一成只有一套 ui(即 cocos2d::ui 名字空间下的 ui)。 3.0的时候重写 GUI 是不太现实的,因为当时很多代码在用。
至于名字空间的优势,我在上面已经回复了。
. 3.最重要的,两套gui在哪些功能点上有比较显著的区别?在我这种新手看来,scale9sprite, scrollview等几个控件,基本上除了实现不同,使用起来感受完全没差异?但这样的东西有两个,总感觉有点别扭
最大的区别就是官方只会维护 cocos2d::ui 这一套了, 其它的 ui 控件只会修一点 bug。 而 scale9Sprite 在 extension 名字空间也存在的原因,完全是为了兼容旧代码。 建议新代码都采用新的 ui。
谢谢。