Спрайт в QML застосовуються ще простіше, ніж в Qt / C ++, оскільки в QML є класи, які спеціально створені для роботи з спрайтами: Sprite і AnimatedSprite.
Структура проекту для роботи зі Sprite і AnimatedSprite
Проект створюється як стандартний проект QtQuick with controls, після чого я викидаю всю зайве, нібито менюбара і кнопок. Залишаю тільки те, що ми будемо використовувати для демонстрації.
- main.cpp - основний файл проекту, в якому запускається qml файл;
- main.qml - вікно програми;
- MainForm.ui.qml - форма для роботи з дизайнером;
- sprite_sheet.png - зображення нашого спрайту.
sprite_sheet.png
Оскільки сам по собі урок досить простий, то зупинюся на програмному коді тільки цього файлу.
В даному уроці пропоную два варіанти застосування спрайтів. Один варіант - це застосування з допомогою SpriteSequence, в який можна поміщати різні спрайт, з різними джерелами. А другий варіант - це з використанням AnimatedSprite, в якому береться одне джерело. Обидва варіанти застосування спрайтів в даному уроці дадуть однаковий результат.
У SpriteSequence задається розмір спрайту і його положення в головному вікні програми, тоді як розмір кадру спрайту і кількість його кадрів задається вже в об'єкті Sprite, який поміщається в SpriteSequence. При цьому в SpriteSequence можна помістити кілька таких об'єктів Sprite.
У випадку з AnimatedSprite всі параметри розмірів і розташування, а також розмірів кадру і його кількості задаються в самому AnimatedSprite. Різниця в тому, що в якості джерела спрайтів може бути взятий тільки один файл.
Також необхідно вказати параметр frameSync як true. Тоді спрайт працюватимуть синхронно, якщо цього не зробити, то вони будуть працювати повільно і по черзі.