| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | #include "..\etransitions.h"
 | 
					
						
							|  |  |  |  | #include "..\eactions.h"
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | #include "..\emanagers.h"
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | e2d::ETransitionMove::ETransitionMove(float moveDuration, MOVE_DIRECT direct) | 
					
						
							|  |  |  |  | 	: m_fMoveDuration(moveDuration) | 
					
						
							|  |  |  |  | 	, m_Direct(direct) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::ETransitionMove::_setTarget(EScene * prev, EScene * next, bool & transitional) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	float distPosX; | 
					
						
							|  |  |  |  | 	float distPosY; | 
					
						
							|  |  |  |  | 	if (m_Direct == MOVE_DIRECT::UP) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		distPosX = 0; | 
					
						
							|  |  |  |  | 		distPosY = -EApp::getHeight(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else if (m_Direct == MOVE_DIRECT::DOWN) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		distPosX = 0; | 
					
						
							|  |  |  |  | 		distPosY = EApp::getHeight(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else if (m_Direct == MOVE_DIRECT::LEFT) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		distPosX = -EApp::getWidth(); | 
					
						
							|  |  |  |  | 		distPosY = 0; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else if (m_Direct == MOVE_DIRECT::RIGHT) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		distPosX = EApp::getWidth(); | 
					
						
							|  |  |  |  | 		distPosY = 0; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-11-03 12:51:01 +08:00
										 |  |  |  | 	next->getRoot()->movePos(-distPosX, -distPosY); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	auto action1 = new EActionMoveBy(m_fMoveDuration, EVec(distPosX, distPosY)); | 
					
						
							|  |  |  |  | 	if (prev) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		action1->setTarget(prev->getRoot()); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	auto action2 = new EActionMoveBy(m_fMoveDuration, EVec(distPosX, distPosY)); | 
					
						
							|  |  |  |  | 	action2->setTarget(next->getRoot()); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	auto action3 = new EActionCallback([&, prev, next] { | 
					
						
							|  |  |  |  | 		transitional = false; | 
					
						
							|  |  |  |  | 		// <20><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 		if (prev) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			prev->getRoot()->setPos(EApp::getWidth() / 2, EApp::getHeight() / 2); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		next->getRoot()->setPos(EApp::getWidth() / 2, EApp::getHeight() / 2); | 
					
						
							|  |  |  |  | 	}); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	EActionManager::addAction(new EActionSequence(2, new EActionTwoAtSameTime(action1, action2), action3)); | 
					
						
							|  |  |  |  | } |