我的第一个场景有3套Sprite表。 我正在使用XCode使用Cocos2D-X为iOS开发。

第一个Sprite工作表的扩展名为-sd,第二个Sprite工作表的扩展名为-hd,而第三组Sprite工作表的扩展名为-ipadhd,则包含3个Sprite工作表(在Texture Packer Pro中使用Multipack)。 我遵循了一个教程,发现了这样的方法

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个Sprite表,如何缓存3个.plist文件? 如果那不可能,那我有什么选择呢?

希望我提供了所有必要的信息!

问候

===============>>#1 票数:1 已采纳

  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; } 
  2. 是的,这种逻辑在wiki上 ,除了它们对三种资源大小使用if-else之外。 我也在论坛和教程中看到过它。

  3. 根据此线程上的cocos2d-iphone论坛,

CCSprite可以显示具有不同纹理的CCSpriteFrames。 因此,即使使用混合来自不同纹理(spritesheets)的帧的动画也没有问题-Stepan Generalov

此处发布实现位于obj-c中,但您可以轻松地将cocos2d api调用转换为cpp。

  ask by translate from so

未解决问题?本站智能推荐: