cocos2d-x UI控件 以及 cocostudio UI编辑器 注意细节

完成第一个小游戏MoonWarrior之后,就开始和UI撕扯不清了,最近一直让做UI界面,这个做完做那个,实现也没什么难度,但就是耗时间,而且windows平台下开发,cocostudio UI编辑器被各种吐槽,但也没办法,吐槽过后还是得继续使用,各种大神都是在Mac平台下开发的,我也想试试呢,虽然换个平台我就是个连工具都不会用的超级菜鸟了...

下面我就说点这段时间碰到的一些问题吧

1.cocostudio UI编辑器提供的输入框UITextField不带光标

这个真心很尴尬,这样用户怎么知道自己已经点中了可以输入了呢,网上虽然有不少提问这方面问题的,可完全没有根本的解决方案,群里也讨论过这个问题,基本上是大神们花时间重写控件,出于立场成了保密资料,所以到现在也没有开源的源码可供参考使用。我还是个菜鸟,当然不可能写出这么高端的源码,只是用了治标的方法表面上解决了这个问题,网上有个大大的博客写了带光标的输入框(这个大大很眼熟吧,MoonWarrior中背景的滚动我们也参考了他的博客),利用这个大大写的控件,将该控件覆盖在获取的UITextField控件上,并将UITextField控件隐藏,这样就形成了假象的带光标的UI输入框

带光标的输入框,请参考:http://blog.csdn.net/onerain88/article/details/7572315

2.cocostudio UI编辑器提供的滑动层UIScrollView注意事项

在cocostudio UI编辑器中滑动层UIScrollView一定要注意不要忘记设置两个属性,子控件布局和特性中的滑动方向。滑动方向不用多说了,就是设定滑动层上下滑动还是左右滑动,子控件布局要与此想对应,上下滑动的就要选线性纵向,左右滑动的就要选线性横向,这样在你对滑动层UIScrollView中的控件进行增加和删除时,UIScrollView才能自动对控件的位置进行改变,如果还是不行,我们可以调用UIScrollView的setInnerContainerSize()方法,让其刷新。

          
                          cocos2d-x UI控件 以及 cocostudio UI编辑器 注意细节_第1张图片

 

最后对于UIScrollView我们还有一个要注意的地方,当对一个UI控件调用clone()方法时,不管是该控件中包含UIScrollView控件还是该控件就是UIScrollView控件,clone()方法都会调用 父类UIWidget::clone(),这个时候UIScrollView所含有的一些特性属性就会丢失,需要对克隆得到的UIScrollView的特性属性进行设置,如setLayoutType()。

3.当我们有如下图情况时,控件C包含控件B,控件B包括控件A cocos2d-x UI控件 以及 cocostudio UI编辑器 注意细节_第2张图片

当我们通过点击控件A来删除控件C中的控件B时,直接在控件A的回调函数中删除是不可以的,因为当前帧你还在使用该控件,所以无法删除该控件或者该控件的parent,有两种方法可以解决:

a.利用scheduleOnce()函数,延迟删除                                                                               

b.将要删除的对象加入删除数组中,在下一帧进行删除,即调用update()函数

 

差不多碰到的问题就这么多,如果有新的需要注意的地方,会添加更新的,以便和大家参考

你可能感兴趣的:(cocos2d-x)