У меня есть 3 комплекта листов спрайтов для моей первой сцены.
Я использую XCode для разработки под iOS с использованием Cocos2D-X.
Первый лист спрайта имеет расширение -sd,
второй лист спрайта имеет -hd,
и третий набор имеет 3 листа спрайтов (используя Multipack в Texture Packer Pro) с расширением -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;
}
Да, этот тип логики на вики, за исключением того, что они используют if-else для трех размеров ресурсов. Я видел это и на форумах и в учебниках.
В соответствии с эта тема на форумах cocos2d-iphone, да:
CCSprite может отображать CCSpriteFrames с различными текстурами.
Так что нет никаких проблем, даже если использовать анимацию, которая смешивает кадры из разных текстур (спрайт-листов) — Степан Генералов
реализации размещены там находятся в obj-c, но вы можете легко конвертировать вызовы cocos2d api в cpp.