zoukankan      html  css  js  c++  java
  • Cocos2d的SpriteSheet在多层图片时出现的问题

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

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

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

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

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

  • 相关阅读:
    让网络更轻盈——网络功能虚拟化技术的现状和未来(中兴通讯)
    服务链(Service Chaining,or Service Function Chaining,SFC,功能服务链)
    中间件(middlebox)
    OpenStack 简介
    数据库系统原理——ER模型与关系模型
    Google 面试
    可扩展性 Scalability
    pay-as-you-go
    Java 自动装箱与拆箱(Autoboxing and unboxing)
    齐次坐标的理解
  • 原文地址:https://www.cnblogs.com/eagley/p/1873835.html
Copyright © 2011-2022 走看看