0부터 카운트하거나 특정 숫자에서 카운트 다운하는 기능이있는 일반 타이머를 만들고 있습니다. 나는 또한 사용자가 시간을 더하고 빼기를 원한다. 타이머가 어떤 숫자에서부터 카운트 다운되는 경우를 제외하고는 모든 것이 구현하기가 쉽고 사용자는 타이머를 더하거나 뺍니다.시간에 추가 할 수있는 카운트 다운 타이머 알고리즘
예를 들어 :
float Timer::GetElapsedTime() {
if (m_forward) {
m_elapsedTime += m_clock.GetElapsedTime() - m_elapsedTime;
} else {
m_elapsedTime -=
m_elapsedTime - m_startingTime + m_clock.GetElapsedTime();
}
return m_elapsedTime;
}
이 좀 더 명확 타이머가 카운트 다운 100에서 시작 상상하기 (m_clock는 SFML의 시계의 인스턴스입니다). 10 초 후에 위의 함수는 100 -= 100 - 100 + 10
과 같으며 90
과 같습니다. 20 초 후에 호출 되었다면 90 -= 90 - 100 + 30
은 70
과 같습니다.
정상적인 계산에서는 작동하지만 AddTime() (m_elapsedTime + = arg)을 호출하면 역방향 계산 알고리즘이 실패합니다.
더 많은 회원을 사용하고 이전 시간 등을 추적 할 수 있다는 것을 알고 있습니다.하지만 분명히 구현이 누락되었는지 궁금합니다. 그 단일 작업에서 가능한 한 간단하게 유지하는 것이 좋습니다.
가. 같은 대답을 내 :-( – Yuliy
글쎄, 내 목표는 기능에 대한 다른 멤버를 사용하지 않으려 고했다. 그럴 경우 m_elapsedTime 직접 시간을 추가하려면 해당 함수가 필요합니다 때문에 첫 번째 블록을 작동하지 않을 경우 + = 및 - =. 그러나 별도의 멤버를 만드는 것만이 유일한 옵션 인 경우 그 내용은 내가 함께 갈 것입니다. – Person
추가 멤버가 아닙니다. m_elapsedTime을 없애고 m_addedTime을 더하고 있습니다. – Yuliy