Comments 7
>The QSocketNotifier makes it possible to integrate Qt's event loop with other event loops based on file descriptors.
Видимо, просто напросто уведомления от системы приходят от файлового сокета, который приложение и слушает… Других идей нет.
Видимо, просто напросто уведомления от системы приходят от файлового сокета, который приложение и слушает… Других идей нет.
На самом деле, по моему опыту, лучше все же не писать под Harmattan приложение совсем без QML — лучше сделать кастомный компонент (это очень просто, поверьте), и разместить его, скажем, в качестве child-элемента к top-level элементу (Window или там Rectangle, если предпочитаете) с занятием всего занимаемого top-level элементом пространства. В плане гибкости вы ничего не потеряете, а скорее даже приобретете — доступ к Qt.application.active, на раз решающему вашу проблему с eventFilter, доступ к screen.allowSwipe, с помощью которого можно без лишнего геморроя запрещать swipe behaviour во время игры и разрешать во время паузы (если игра основана на жестах, то пользователю может не очень понравиться, когда при неосторожном движении у него игра уедет в фон, а то и закроется), и т.д. и т.п.
Весь код в этой статье будет на C++, олдфаги одобряют.
Одобряют не только олдфаги ;).
А как вы делали анимацию спрайтов?
Анимация делается в движке следующим образом: у каждого анимированного объекта есть поле — номер кадра
На каждом шаге обработки логики игры для определенных объектов устанавливается нужный кадр
При отрисовке каждого кадра достаем нужный спрайт из массива
class AnimationObject
{
int m_frame;
public:
int frame() const;
};
На каждом шаге обработки логики игры для определенных объектов устанавливается нужный кадр
void updateTower(Tower& tower)
{
...
if (tower.isAttacking())
{
tower.setFrame(tower.frame() + 1);
}
...
}
При отрисовке каждого кадра достаем нужный спрайт из массива
void paintTower(const Tower& tower)
{
drawSprite(tower.position(), towerSprites[tower.frame()];
}
Sign up to leave a comment.
Портирование игры на Nokia N9