| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | #include "..\easy2d.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | MouseNode::MouseNode() : | 
					
						
							|  |  |  |  | 	m_bBlock(true), | 
					
						
							|  |  |  |  | 	m_bTarget(false), | 
					
						
							|  |  |  |  | 	m_callback([]() {}) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | MouseNode::~MouseNode() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool MouseNode::_exec(bool active) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ý<EFBFBD><C3BD>㣬<EFBFBD><E3A3AC> display <20><><EFBFBD><EFBFBD>Ϊ false<73><65><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	if (!active || !m_bDisplay) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return false; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20>жϽڵ<CFBD>״̬
 | 
					
						
							|  |  |  |  | 	_judge(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϣ<EFBFBD><CFA3><EFBFBD>ѡ<EFBFBD><D1A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҳ<EFBFBD>ڽڵ<DABD><DAB5>ϣ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	if (m_eStatus == MOUSEIN || m_eStatus == SELECTED) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// <20>ڵ㱻<DAB5><E3B1BB><EFBFBD><EFBFBD>ѡ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧<EFBFBD><CCA7>
 | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | 		if (m_bTarget && MouseMsg::isOnLButtonUp()) | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			onClicked();	// ִ<>лص<D0BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD>ڵ㲻<DAB5><E3B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><C3BB>潹<EFBFBD><E6BDB9>
 | 
					
						
							|  |  |  |  | 		if (!m_bBlock) return true; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return false; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::_onDraw() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20>ڵ<EFBFBD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
 | 
					
						
							|  |  |  |  | 	if (!m_bDisplay) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20>ڵ<EFBFBD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ѡ<EFBFBD><D1A1>
 | 
					
						
							|  |  |  |  | 	if (m_eStatus == SELECTED) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		_onSelected(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڽڵ<DABD><DAB5><EFBFBD>
 | 
					
						
							|  |  |  |  | 		if (m_eStatus == MOUSEIN) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			_onMouseIn(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			_onNormal(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::_setNormal() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	m_bTarget = false;		// ʧȥ<CAA7><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	m_eStatus = NORMAL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::_setMouseIn() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	m_eStatus = MOUSEIN; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::_setSelected() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	m_bTarget = true;		// ȡ<>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	m_eStatus = SELECTED; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::onClicked() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	m_callback(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool MouseNode::isMouseIn() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return m_eStatus == MOUSEIN || m_eStatus == SELECTED; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool MouseNode::isSelected() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return m_eStatus == SELECTED; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::setOnMouseClicked(const CLICK_CALLBACK & callback) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	m_callback = callback; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::reset() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	m_eStatus = NORMAL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void MouseNode::setBlock(bool block) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	m_bBlock = block; | 
					
						
							|  |  |  |  | } |