Time.h
资源名称:g.rar [点击查看]
上传用户:laitongbao
上传日期:2021-02-20
资源大小:8176k
文件大小:1k
源码类别:

射击游戏

开发平台:

Visual C++

  1. #include"CGLApplication.h"
  2. #include<list>
  3. #ifndef TIME_H
  4. #define TIME_H
  5. #define  INTERNAL_CLOCK g_pClock
  6. class Timer;
  7. class Clock
  8. {
  9. friend class Timer;
  10. public:
  11. ~Clock();
  12. void RegisterTimer(Timer*timer);
  13. void UnregisterTimer(Timer*timer);
  14. void Update();
  15. private:
  16. std::list<Timer*> timers;
  17.     float frameTime;
  18. };
  19. class Timer
  20. {
  21. friend class Clock;
  22. public:
  23. Timer(Clock*source,float factor=1.f,float interval = 0.f);//source 一般为INTERNAL_CLOCK,factor是速度参数
  24. ~Timer();
  25. float  GetTime();//返回从建立该对象到当前的时间,时间以秒为单位(与速度参数有关)
  26. float  GetFrameTime();//返回上一帧的时间,这个时间其实是上8帧的平均值,用来平滑动画速度
  27. void Reset(float newTime=0);
  28. void Pause();
  29. void SetFactor(float factor);//设置速度参数
  30. void Continue();
  31. void SetInterval(float interval);
  32. void AddFunction(void(CALLBACK*func)(float));
  33. void RemoveFunction(void(CALLBACK*func)(float));
  34. void ClearFunction();
  35. private:
  36. Clock*source;
  37. bool active;
  38. float localTime;
  39. float scaleFactor;
  40.     float frameTime;
  41. float interval;
  42. float lastTime;
  43. std::list<void(CALLBACK*)(float time)> funcList;
  44. };
  45. class FrameTimer
  46. {
  47. public:
  48.     
  49. FrameTimer(int delay_);
  50.     
  51. public:
  52.    
  53. void startTimer();
  54. void update();
  55. void stopTimer();
  56. bool reach();
  57. bool isRunning();
  58. // data
  59. private:
  60. int delay;
  61. int currentFrame;
  62.     
  63. };
  64. #endif