107 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
| #include "..\eactions.h"
 | |
| #include "..\Win\winbase.h"
 | |
| 
 | |
| e2d::EAction::EAction() :
 | |
| 	m_bRunning(false),
 | |
| 	m_bEnding(false),
 | |
| 	m_bInit(false),
 | |
| 	m_pTarget(nullptr),
 | |
| 	m_pParentScene(nullptr)
 | |
| {
 | |
| 	// 默认动作 15ms 运行一次
 | |
| 	setInterval(15);
 | |
| }
 | |
| 
 | |
| e2d::EAction::~EAction()
 | |
| {
 | |
| }
 | |
| 
 | |
| bool e2d::EAction::isRunning()
 | |
| {
 | |
| 	return m_bRunning;
 | |
| }
 | |
| 
 | |
| bool e2d::EAction::_isEnding()
 | |
| {
 | |
| 	return m_bEnding;
 | |
| }
 | |
| 
 | |
| void e2d::EAction::start()
 | |
| {
 | |
| 	this->resume();
 | |
| }
 | |
| 
 | |
| void e2d::EAction::resume()
 | |
| {
 | |
| 	m_bRunning = true;
 | |
| 	m_tLast = GetNow();
 | |
| }
 | |
| 
 | |
| void e2d::EAction::pause()
 | |
| {
 | |
| 	m_bRunning = false;
 | |
| }
 | |
| 
 | |
| void e2d::EAction::stop()
 | |
| {
 | |
| 	m_bEnding = true;
 | |
| }
 | |
| 
 | |
| void e2d::EAction::setInterval(LONGLONG milliSeconds)
 | |
| {
 | |
| 	// 设置动作的时间间隔
 | |
| 	m_nAnimationInterval = milliSeconds;
 | |
| }
 | |
| 
 | |
| void e2d::EAction::setTarget(ENode * node)
 | |
| {
 | |
| 	if (m_pTarget)
 | |
| 	{
 | |
| 		// 动作只能有一个目标
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	if (node)
 | |
| 	{
 | |
| 		m_pTarget = node;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| e2d::EAction * e2d::EAction::reverse() const
 | |
| {
 | |
| 	assert(0);
 | |
| 	return nullptr;
 | |
| }
 | |
| 
 | |
| e2d::ENode * e2d::EAction::getTarget()
 | |
| {
 | |
| 	return m_pTarget;
 | |
| }
 | |
| 
 | |
| void e2d::EAction::_init()
 | |
| {
 | |
| 	m_bInit = true;
 | |
| 	// 记录当前时间
 | |
| 	m_tLast = GetNow();
 | |
| }
 | |
| 
 | |
| void e2d::EAction::_update()
 | |
| {
 | |
| 	if (!m_bInit)
 | |
| 	{
 | |
| 		_init();
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void e2d::EAction::_reset()
 | |
| {
 | |
| 	m_bInit = false;
 | |
| 	m_bEnding = false;
 | |
| 	m_tLast = GetNow();
 | |
| }
 | |
| 
 | |
| void e2d::EAction::_resetTime()
 | |
| {
 | |
| 	m_tLast = GetNow();
 | |
| }
 |