Cocosbuilder的一些tips

因为cocosbuilder这个东西网上的教程也好,官方文档也好都相当不全。对里面的一些重点在这里做一下记录,方便查看。

如何添加timeline callback和sound effects

Cocosbuilder的一些tips_第1张图片

按住option键点击对应的关键帧,然后填入selector的名字。

然后在js里面写出这个selector就ok。

Sound effects是同样的道理。

关于资源自动缩放

cocosbuilder的自动缩放有一个很神奇的地方,它可以对在资源文件夹下的所有叫做resources-auto的子文件夹进行处理。

普通缩放的例子

可以看到在输出文件夹里面

自动生成了分辨率不同的图片

是不是很神奇?

不过更神奇的在后面。

打包缩放

其实这个功能很难找到,不过总而言之是被我发现了。

在Resource的根目录下增加一个用来测试的文件夹

Cocosbuilder的一些tips_第2张图片

然后我们回到cocosbuilder

选中res-test文件夹,标记为smart-sprite-sheet

接着编辑一下选项

Cocosbuilder的一些tips_第3张图片

导出以后发现已经压缩好了。

Cocosbuilder的一些tips_第4张图片

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就行了。

Cocosbuilder的一些tips_第5张图片

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当中实现移动动画的时候,无论使用百分比还是数值都无法保证移动位置正确。

比如如下例

Cocosbuilder的一些tips_第6张图片

点击这个使右边的菜单栏往左。

各种设置都会出现问题。唯一的办法是先放一个空白的sprite充当以上sprite的父节点,把这个空白sprite设置为anchor(1,1),位置是100%,100%。

然后对以上sprite做一个以百分比为基准的移动动画。这样就不会出现问题了。

set owner var在js binding中的问题

在c++里面,set owner var 可以使得引用当前ccbFile的ccbFile的控制器的成员变量

但是在js里面有点问题,因此需要自己重新绑定。具体的方法就不放代码了。

此外,ccbFile加入其他ccbFile时似乎本身一定是可见的,如果需要默认不可见要在onDidLoadFromCCB里面进行设置。

你可能感兴趣的:(Cocosbuilder的一些tips)