34 lines
890 B
C++
34 lines
890 B
C++
#pragma once
|
|
#include "EzUI.h"
|
|
#include "Timer.h"
|
|
|
|
namespace ezui {
|
|
|
|
class UI_EXPORT Animation : public Object {
|
|
private:
|
|
TimerClock m_timer;
|
|
float m_startValue = 0;
|
|
float m_endValue = 0;
|
|
float m_currValue = 0;
|
|
std::atomic<bool> m_tickPending = false;
|
|
std::shared_ptr<std::atomic<bool>> m_alive;
|
|
bool m_finished = true;
|
|
float m_damping = 1.0f;
|
|
public:
|
|
//当值更改的时候发生的事件(请绑定此函数进行回调,已处理线程同步)
|
|
std::function<void(float)> ValueChanged;
|
|
Animation(Object* ownerObject = NULL);
|
|
virtual ~Animation();
|
|
void SetStartValue(float value);
|
|
void SetEndValue(float value);
|
|
//开始动画
|
|
void Start(int durationMs, int fps = 90);
|
|
//动画是否已经停止(判断的是计时器状态)
|
|
bool IsStopped()const;
|
|
//动画是否已跑完(判断起始值和结束值)
|
|
bool IsFinished()const;
|
|
void Stop();
|
|
};
|
|
|
|
};
|