SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Загрузка анимации для меню. › Ответ в теме: Загрузка анимации для меню.
Как я сделал сейчас:
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//получаем директорию, в которой находится .exe и прибавляем нужные файлы/папки string szDirFile(string filename) { string sExePath = cExePath; return sExePath + filename; } //преобразовываем int в string с помощью stringstream //и возвращаем название нужного файла string szGetImg(int num) { stringstream ssNum; ssNum << num; string sNum; ssNum >> sNum; if(num <= 9) return (szDirFile("img/menu_idle/test00000") + sNum + ".png"); else if(num > 9 && num < 100) return szDirFile("img/menu_idle/test0000") + sNum + ".png"; else return szDirFile("img/menu_idle/test000") + sNum + ".png"; } |
А это код отрисовки:
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void menu(RenderWindow & window) { int iFrame = 0; while(isMenu) { window.clear(Color(129, 181, 221)); Texture menuBackground; menuBackground.loadFromFile(szGetImg(iFrame)); Sprite menuBg(menuBackground); window.draw(menuBg); window.display(); if(iFrame < 71) iFrame++; else iFrame = 0; } } |
Но загружать каждый раз изображение как-то не очень, ведь я прав? Нужно это оптимизировать…
Как вариант: сперва загрузить всё в динамический массив, а потом уже покадрово отрисовывать всё.