Cocos2D-X是选择合适的精灵表的最有效方法
Cocos2D-X most efficient way to select the appropriate sprite sheet
我的第一个场景有3组精灵表。我正在使用XCode使用Cocos2D-X为iOS进行开发。
第一个子画面表具有扩展名-sd,第二子画面片具有-hd,第三套有3张sprite表(使用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文件?如果这是不可能的,我有什么选择?
希望我提供了所有必要的信息!
问候
-
当然,但为了清晰和灵活,这个三元运算符可能应该用另一个构造(比如开关)来切换。
例如:
// 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论坛上的这条帖子,是:
CCSprite可以显示具有不同纹理的CCSpriteFrames。因此,即使使用混合不同纹理(精灵表)的帧的动画也没有任何问题-Stepan Generalov
那里发布的实现在obj-c中,但您可以很容易地将cocos2dapi调用转换为cpp。
相关文章:
- 在C++中初始化向量映射的最有效方法
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++变量的最有效方法
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 确保套装新鲜度的有效方法
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在C++事务之间存储大量字符数据的有效方法
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 检查两个向量是否并行的最有效方法
- 从浮点数中删除小数部分但保留类型的有效方法
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 创建字符串数组的有效方法
- 返回一个引用C++中另一个类对象的对象的有效方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 从std::map值中获取密钥的有效方法