Функция C3DAnimation::iPrevFrame()
Функция перехода к предыдущему кадру работает точно так же, как функция перехода к следующему кадру, но смена кадров осуществляется в обратном направлении. Код уменьшает номер текущего кадра и проверяет не стал ли номер равен –1. Если номер равен –1, то выбирается последний кадр анимации. Вот как выглядит код функции:
int C3DAnimation::iPrevFrame(void) { // Переход к предыдущему кадру m_iCurFrame--; // Если номер кадра меньше нуля, переходим к последнему кадру. // Если кадров нет, переходим к нулевому кадру if(m_iCurFrame < 0) { // Проверяем есть ли кадры if(m_iNumFrames) { // Переход к последнему кадру m_iCurFrame = m_iNumFrames - 1; } // Кадров нет else { // Переход к нулевому кадру m_iCurFrame = 0; } } // Возвращаем номер кадра return(m_iCurFrame); }
В коде вы можете видеть как я уменьшаю значение переменной с номером текущего кадра, чтобы переместиться ближе к началу анимации. Затем я проверяю не стал ли номер кадра меньше 0. Если да, я проверяю есть ли вообще кадры в анимации. Если кадры есть, то текущим становится последний кадр анимации. Если кадров нет, номер текущего кадра остается навным 0. Завершая свою работу функция возвращает номер текущего кадра. Весь этот процесс показан на рис. 11.21.
Рис. 11.21. Выполнение функции перехода к предыдущему кадру