Cocos2d的SpriteSheet在多层图片时出现的问题

Cocos2d SpriteSheet 分层问题
本文探讨了Cocos2d中SpriteSheet技术在处理多层图片时的局限性,并提出了三种解决方案:分开合成图片、直接使用CCSprite及采用SpriteAtlas。这些方法各有优劣,需根据项目实际情况选择。

Cocos2d的SpriteSheet是将一些图片合在一起,放在一张大图片里。这种技术对于做动画效果是很有利的。它可以使系统不用每画一帧都要读取一张图片,只要事先定好每张小图在大图里的位置,读取的时候直接找到该位置的图片就行了。

然而,这种技术在应用到有多层图片的时候就无法胜任了。

SpriteSheet类在使用时是直接把合成的大图加入到layer里面的,但是这样就无法给大图里面的每一张小图分配不同的层级。因此如果有两张小图被合成到了同一个大图里,而又需要重叠显示在layer里时,其中一张图片就会被另一张遮住(具体哪张被盖住取决于加入到layer的顺序)。

如果想要解决这个问题,一种方法是把这两张小图片合成到两张不同的大图里去,然后在加入layer的时候或者通过调整加入的顺序,或者设置CCNode的zOrder,控制图片的叠层;另一种方法就是索性放弃SpriteSheet,直接用CCSprite分别读取两张小图,这样可以避免图片无法分层的问题;第三种方法是使用cocos2d的另一个类SpriteAtlas,SpriteAtlas同样是读取由小图片合成的大图片,但是该类不能把大图直接加入到layer里面,而仍然要读取每一个CCSprite。

以上三种方法都可以解决SpriteSheet无法分层的问题。但是总的图片数量、每一个程序的代码本身的限制以及其他各种因素都会影响到对三个方法的优劣的判断。因此必须要根据当前project的不同情况,使用最方便、代价最小的方法。

转载于:https://www.cnblogs.com/eagley/archive/2010/11/10/1873835.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值