Cocosbuilder的一些tips(持续更新)
2014-03-21 17:54
330 查看
http://blog.csdn.net/yuechuzhao/article/details/9232319
因为cocosbuilder这个东西网上的教程也好,官方文档也好都相当不全。对里面的一些重点在这里做一下记录,方便查看。
按住option键点击对应的关键帧,然后填入selector的名字。
然后在js里面写出这个selector就ok。
Sound effects是同样的道理。
cocosbuilder的自动缩放有一个很神奇的地方,它可以对在资源文件夹下的所有叫做resources-auto的子文件夹进行处理。
可以看到在输出文件夹里面
自动生成了分辨率不同的图片
是不是很神奇?
不过更神奇的在后面。
在Resource的根目录下增加一个用来测试的文件夹
然后我们回到cocosbuilder
选中res-test文件夹,标记为smart-sprite-sheet
接着编辑一下选项
导出以后发现已经压缩好了。
ok,完成
这里已经自动缩放过了,然后就可以像用plist一样使用它了。
字体缩放方面这个主要就是要用bmfont了,目测使用ttf不如bmfont。
但是如果使用bmfont有个问题,就是resources-auto这个只能缩放图片。所以这里我们只能用别的办法来处理这个问题。
cocosbuilder的另外一条诀窍,那就是可以在任意文件夹下放resources-iphone,resources-ipad等等文件夹,然后我们可以在代码当中适配这些东西,就可以根据不同的分辨率采用不同的资源了。(这个不是通过自动缩放,而是我们手动 进行缩放)
那么具体怎么处理呢。
上图。
这些都是bmfont生成的,有关怎么使用bmfont这里不再单独解释。简单说下这几个文件夹当中使用的字体生成参数
ipad-hd/iphonehd:字体128
ipad/large:字体64
iphone/medium:字体32
small:字体16
(注意cocosbuilder似乎只能接受单张png的fnt,所以图不能太大)
生成以后放到不同的文件夹里。外面的因为我们h5版本是480x320和iphone一样的(这个完全取决于h5版本输出的分辨率),所以把iphone文件夹里的拿出来放在最外面。
在cocosbuilder里面我们可以发现可以选择这个fnt了。总之具体效果就不放了,这样做ok就行了。
生成smart spritesheet多分辨率适配的时候,要注意单张图片的宽不能超过2048。否则在ipadhd时会输出错误图片。
同时最小也不要低于16,这样在某些小分辨率下可能无法输出对应图片
cocosbuilder当中并没有对setContenScaleFactor这个函数做特殊的处理,因此一旦在cpp那边使用了setContentScaleFactor,就会在某些情况下出现无法适配的情况。
使用contentScaleFactor只会修改sprite的contentSize,却不会修改在cocosbuilder里面设置好的其他Node的大小。
问题会出在当ccMenu,ccLayer,ccNode这种自定义contentSize并写在cocosbuilder里面的节点上。当这些节点的父节点是sprite时,问题就会出现。
解决方法是设置这些节点的contentSize时先设置成数值,然后设置成百分比。(当然,这些节点内部的全部元素的contentSize和position都要设置成百分比)
这个其实是属于上一个问题的一部分。使用contentScaleFactor只会修改sprite的contentSize造成的问题。
当一个sprite要在cocosbuilder当中实现移动动画的时候,无论使用百分比还是数值都无法保证移动位置正确。
比如如下例
点击这个使右边的菜单栏往左。
各种设置都会出现问题。唯一的办法是先放一个空白的sprite充当以上sprite的父节点,把这个空白sprite设置为anchor(1,1),位置是100%,100%。
然后对以上sprite做一个以百分比为基准的移动动画。这样就不会出现问题了。
在c++里面,set owner var 可以使得引用当前ccbFile的ccbFile的控制器的成员变量
但是在js里面有点问题,因此需要自己重新绑定。具体的方法就不放代码了。
此外,ccbFile加入其他ccbFile时似乎本身一定是可见的,如果需要默认不可见要在onDidLoadFromCCB里面进行设置。
因为cocosbuilder这个东西网上的教程也好,官方文档也好都相当不全。对里面的一些重点在这里做一下记录,方便查看。
如何添加timeline callback和sound effects
按住option键点击对应的关键帧,然后填入selector的名字。
然后在js里面写出这个selector就ok。
Sound effects是同样的道理。
关于资源自动缩放
cocosbuilder的自动缩放有一个很神奇的地方,它可以对在资源文件夹下的所有叫做resources-auto的子文件夹进行处理。普通缩放的例子
可以看到在输出文件夹里面
自动生成了分辨率不同的图片
是不是很神奇?
不过更神奇的在后面。
打包缩放
其实这个功能很难找到,不过总而言之是被我发现了。在Resource的根目录下增加一个用来测试的文件夹
然后我们回到cocosbuilder
选中res-test文件夹,标记为smart-sprite-sheet
接着编辑一下选项
导出以后发现已经压缩好了。
ok,完成
这里已经自动缩放过了,然后就可以像用plist一样使用它了。
自动缩放之外的补充(字体缩放)
字体缩放方面这个主要就是要用bmfont了,目测使用ttf不如bmfont。但是如果使用bmfont有个问题,就是resources-auto这个只能缩放图片。所以这里我们只能用别的办法来处理这个问题。
cocosbuilder的另外一条诀窍,那就是可以在任意文件夹下放resources-iphone,resources-ipad等等文件夹,然后我们可以在代码当中适配这些东西,就可以根据不同的分辨率采用不同的资源了。(这个不是通过自动缩放,而是我们手动 进行缩放)
那么具体怎么处理呢。
上图。
这些都是bmfont生成的,有关怎么使用bmfont这里不再单独解释。简单说下这几个文件夹当中使用的字体生成参数
ipad-hd/iphonehd:字体128
ipad/large:字体64
iphone/medium:字体32
small:字体16
(注意cocosbuilder似乎只能接受单张png的fnt,所以图不能太大)
生成以后放到不同的文件夹里。外面的因为我们h5版本是480x320和iphone一样的(这个完全取决于h5版本输出的分辨率),所以把iphone文件夹里的拿出来放在最外面。
在cocosbuilder里面我们可以发现可以选择这个fnt了。总之具体效果就不放了,这样做ok就行了。
smart spritesheet的一个bug
生成smart spritesheet多分辨率适配的时候,要注意单张图片的宽不能超过2048。否则在ipadhd时会输出错误图片。同时最小也不要低于16,这样在某些小分辨率下可能无法输出对应图片
setContentScaleFactor造成的一个问题
cocosbuilder当中并没有对setContenScaleFactor这个函数做特殊的处理,因此一旦在cpp那边使用了setContentScaleFactor,就会在某些情况下出现无法适配的情况。使用contentScaleFactor只会修改sprite的contentSize,却不会修改在cocosbuilder里面设置好的其他Node的大小。
问题会出在当ccMenu,ccLayer,ccNode这种自定义contentSize并写在cocosbuilder里面的节点上。当这些节点的父节点是sprite时,问题就会出现。
解决方法是设置这些节点的contentSize时先设置成数值,然后设置成百分比。(当然,这些节点内部的全部元素的contentSize和position都要设置成百分比)
setContentScaleFactor造成的问题补充
这个其实是属于上一个问题的一部分。使用contentScaleFactor只会修改sprite的contentSize造成的问题。当一个sprite要在cocosbuilder当中实现移动动画的时候,无论使用百分比还是数值都无法保证移动位置正确。
比如如下例
点击这个使右边的菜单栏往左。
各种设置都会出现问题。唯一的办法是先放一个空白的sprite充当以上sprite的父节点,把这个空白sprite设置为anchor(1,1),位置是100%,100%。
然后对以上sprite做一个以百分比为基准的移动动画。这样就不会出现问题了。
set owner var在js binding中的问题
在c++里面,set owner var 可以使得引用当前ccbFile的ccbFile的控制器的成员变量但是在js里面有点问题,因此需要自己重新绑定。具体的方法就不放代码了。
此外,ccbFile加入其他ccbFile时似乎本身一定是可见的,如果需要默认不可见要在onDidLoadFromCCB里面进行设置。
相关文章推荐
- 关于安卓开发的一些tips(持续更新)
- Cocosbuilder的一些tips(持续更新)
- 【JavaScript 基础知识】一篇关于 JavaScript 一些知识点的总结 —— 持续更新
- 一些有用的Latex模板(持续更新)
- Little Tips(持续更新)
- 开发中的一些坑(持续更新.......)
- 『ExtJS』使用中需要注意的一些事(持续更新)
- 一些常用的linux命令(持续更新)
- adaboost 算法在实现中的一些问题以及解决方法(持续更新)
- 『C#基础』一些零碎东西的记录(持续更新)
- 积累一些常用的功能的代码片段。持续更新
- Linux工作中常用到的一些命令(持续更新)常用的
- 一些CV的博客[持续更新]
- 关于编码转换的一些问题和整理(持续更新)
- ABAP report常用的一些语句用法(包括字符串操作,变量动态操作)(持续更新)
- python的一些学习资料(持续更新中)
- 关于链表的一些操作(持续更新中)
- MySQL操作中的一些细节及良好习惯--------持续更新中...
- 关于hibernate的一些恶心的小地方报错(持续更新)
- lua开发中的一些小笔记(持续更新)