我的第一个场景有3套精灵表。 我正在使用XCode使用Cocos2D-X为iOS开发。
第一个精灵表有一个扩展名-sd, 第二个精灵表有-hd, 第三组有3个精灵表(使用Texture Packer Pro中的Multipack),扩展名为-ipadhd。 我按照教程,找到了一个像这样的方法
CCString* file = (Utils::getArtScaleFactor() > 1) ? CCString::create("randomFile-hd.plist") : CCString::create("randomFile-sd.plist");
//The Utils::getArtScaleFactor function
float Utils::getArtScaleFactor()
{
return artScaleFactor;
}
1-是否有类似的方法可以选择3个文件而不是2个?
2-这是选择合适文件大小的常用方法吗?
3-这个问题有点偏离我正在讨论的话题,但我真的需要一个答案:我有一个动画,它的帧被分成3个精灵表,如何缓存3个.plist文件?如果这是不可能的,我有什么选择?
希望我提供了所有必要的信息!
此致
答案 0 :(得分:1)
当然,但为了清晰和灵活,可能应该使用另一个构造(如开关)切换三元运算符。
例如:
// Always init your pointers.
CCString* file = NULL;
switch (Utils::getArtScaleFactor())
{
// Scale factor shouldn't ever be 0, but we should account for it
// so it doesn't get picked up by the default case.
case 0:
case 1:
file = CCString::create("randomFile-sd.plist");
break;
case 2:
file = CCString::create("randomFile-hd.plist");
break;
// Scale factors 3 and above get the largest resource.
default:
file = CCString::create("randomFile-super-hd.plist");
break;
}
是的,这种类型的逻辑在wiki上,除了它们使用if-else三种资源大小。我也在论坛和教程上看过它。
根据cocos2d-iphone论坛上的this thread,是:
CCSprite可以显示具有不同纹理的CCSpriteFrame。 所以即使使用混合来自不同纹理(spritesheets)的帧的动画也没有问题 - Stepan Generalov
implementations posted there在obj-c中,但您可以轻松地将cocos2d api调用转换为cpp。