新的TexturePacker自动适应了cocos2d的自动补-hd。对于以往的TexturePacker版本,他所生成的.plist文件中使用的textureFileName来标识texture文件的名字,名字写的是实际的texture文件,比如-hd的plist写的是atlas-hd.png,由于cocos2d 1.0.0的CCSpriteFrameCache在加载plist时,如果调用方法没有指定texture文件的路径,则会读取plist中上面的字段,对于iphone4,则还会在后面补加-hd,于是老版本的TexturePacker生成的plist就不能自动完成cocos2d的自动-hd。
而新版本则会在这个字段写atlas.png,这样当需要-hd的时候,cocos2d,会读到这个atlas.png名字的之后再在后面补加-hd,以atlas-hd.png作为texture。一切都自动完成了。但是别高兴的太早,ipad人家是不管。
那么对于开发人员的影响是什么呢,对于iphone4, iphone为一个项目,ipad版本为一个项目的开发人员来说,不需要调整任何东西。但对于开发的是iphone4, iphone, ipad在一个项目的通用版来说,并且是iphone4资源和ipad资源为同一份的项目结构来说,可能会有问题。
问题就在于,为了iphone4和ipad使用同一份资源,我们以前需要在加载atlas的plist的时候就根据设备来手动指定传入不同的plist。因为cocos2d只为我们区分了iphone和iphone4(retina)。因为老版本TextPacker会为我们纪录真是的texture路径,所以即便在加载plist不写texture路径参数,plist中的字段也是正确的。但是新版本该字段已经不是实际texture路径了,所以一定会出现资源加载错误的问题。
解决方法:很简单,就是在加载plist的时候永远手动指定真实texture文件路径参数。从原理上讲,也是正确的处理方式,因为cocos2d只解决了iphone和iphone4,没有提供ipad的自动-hd(因为确实也不该提供),那么我们就自然要手动提供和设置这些参数。