增加JumpBy和JumpTo动作
This commit is contained in:
		
							parent
							
								
									f66a56e028
								
							
						
					
					
						commit
						50825ba00d
					
				|  | @ -60,7 +60,7 @@ void e2d::Action::setName(const String& name) | ||||||
| 
 | 
 | ||||||
| e2d::Action * e2d::Action::reverse() const | e2d::Action * e2d::Action::reverse() const | ||||||
| { | { | ||||||
| 	WARN_IF(true, "Action cannot be reversed!"); | 	ASSERT(false, "Action cannot be reversed!"); | ||||||
| 	return nullptr; | 	return nullptr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -14,16 +14,16 @@ void e2d::ActionGradual::_init() | ||||||
| void e2d::ActionGradual::_update() | void e2d::ActionGradual::_update() | ||||||
| { | { | ||||||
| 	Action::_update(); | 	Action::_update(); | ||||||
| 	// 判断时间间隔是否足够
 | 
 | ||||||
| 	if (_duration == 0) | 	if (_duration == 0) | ||||||
| 	{ | 	{ | ||||||
| 		_delta = 1; | 		_delta = 1; | ||||||
| 		this->stop(); | 		this->stop(); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 	// 计算动作进度
 | 
 | ||||||
| 	_delta = min((Time::getTotalTime() - _last) / _duration, 1); | 	_delta = min((Time::getTotalTime() - _last) / _duration, 1); | ||||||
| 	// 判断动作是否结束
 | 
 | ||||||
| 	if (_delta >= 1) | 	if (_delta >= 1) | ||||||
| 	{ | 	{ | ||||||
| 		this->stop(); | 		this->stop(); | ||||||
|  |  | ||||||
|  | @ -89,11 +89,20 @@ void e2d::Animate::onDestroy() | ||||||
| 
 | 
 | ||||||
| e2d::Animate * e2d::Animate::clone() const | e2d::Animate * e2d::Animate::clone() const | ||||||
| { | { | ||||||
|  | 	if (_animation) | ||||||
|  | 	{ | ||||||
| 		return new (std::nothrow) Animate(_animation); | 		return new (std::nothrow) Animate(_animation); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		return nullptr; | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Animate * e2d::Animate::reverse() const | e2d::Animate * e2d::Animate::reverse() const | ||||||
| { | { | ||||||
|  | 	if (_animation) | ||||||
|  | 	{ | ||||||
| 		auto& oldFrames = _animation->getFrames(); | 		auto& oldFrames = _animation->getFrames(); | ||||||
| 		std::vector<Image*> frames(oldFrames.size()); | 		std::vector<Image*> frames(oldFrames.size()); | ||||||
| 
 | 
 | ||||||
|  | @ -111,4 +120,9 @@ e2d::Animate * e2d::Animate::reverse() const | ||||||
| 
 | 
 | ||||||
| 		auto animation = new (std::nothrow) Animation(_animation->getInterval(), frames); | 		auto animation = new (std::nothrow) Animation(_animation->getInterval(), frames); | ||||||
| 		return new (std::nothrow) Animate(animation); | 		return new (std::nothrow) Animate(animation); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		return nullptr; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ e2d::CallFunc::CallFunc(const Function& func) : | ||||||
| 
 | 
 | ||||||
| e2d::CallFunc * e2d::CallFunc::clone() const | e2d::CallFunc * e2d::CallFunc::clone() const | ||||||
| { | { | ||||||
| 	return new CallFunc(_func); | 	return new (std::nothrow) CallFunc(_func); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::CallFunc::_init() | void e2d::CallFunc::_init() | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ e2d::Delay::Delay(double duration) | ||||||
| 
 | 
 | ||||||
| e2d::Delay * e2d::Delay::clone() const | e2d::Delay * e2d::Delay::clone() const | ||||||
| { | { | ||||||
| 	return new Delay(_delay); | 	return new (std::nothrow) Delay(_delay); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Delay::_init() | void e2d::Delay::_init() | ||||||
|  | @ -18,7 +18,7 @@ void e2d::Delay::_init() | ||||||
| void e2d::Delay::_update() | void e2d::Delay::_update() | ||||||
| { | { | ||||||
| 	Action::_update(); | 	Action::_update(); | ||||||
| 	// 判断时间间隔是否足够
 | 
 | ||||||
| 	if ((Time::getTotalTime() - _last) >= _delay) | 	if ((Time::getTotalTime() - _last) >= _delay) | ||||||
| 	{ | 	{ | ||||||
| 		this->stop(); | 		this->stop(); | ||||||
|  |  | ||||||
|  | @ -0,0 +1,52 @@ | ||||||
|  | #include "..\e2daction.h" | ||||||
|  | 
 | ||||||
|  | e2d::JumpBy::JumpBy(double duration, const Vector & vec, double height, int jumps) | ||||||
|  | 	: ActionGradual(duration) | ||||||
|  | 	, _deltaPos(vec) | ||||||
|  | 	, _height(height) | ||||||
|  | 	, _jumps(jumps) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | e2d::JumpBy * e2d::JumpBy::clone() const | ||||||
|  | { | ||||||
|  | 	return new (std::nothrow) JumpBy(_duration, _deltaPos, _height, _jumps); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | e2d::JumpBy * e2d::JumpBy::reverse() const | ||||||
|  | { | ||||||
|  | 	return new (std::nothrow) JumpBy(_duration, -_deltaPos, _height, _jumps); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::JumpBy::_init() | ||||||
|  | { | ||||||
|  | 	ActionGradual::_init(); | ||||||
|  | 
 | ||||||
|  | 	if (_target) | ||||||
|  | 	{ | ||||||
|  | 		_prevPos = _startPos = _target->getPos(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::JumpBy::_update() | ||||||
|  | { | ||||||
|  | 	ActionGradual::_update(); | ||||||
|  | 
 | ||||||
|  | 	if (_target) | ||||||
|  | 	{ | ||||||
|  | 		double frac = fmod(_delta * _jumps, 1.0); | ||||||
|  | 		double x = _deltaPos.x * _delta; | ||||||
|  | 		double y = _height * 4 * frac * (1 - frac); | ||||||
|  | 		y += _deltaPos.y * _delta; | ||||||
|  | 
 | ||||||
|  | 		Point currentPos = _target->getPos(); | ||||||
|  | 
 | ||||||
|  | 		Vector diff = currentPos - _prevPos; | ||||||
|  | 		_startPos = diff + _startPos; | ||||||
|  | 
 | ||||||
|  | 		Point newPos = _startPos + Vector(x, y); | ||||||
|  | 		_target->setPos(newPos); | ||||||
|  | 
 | ||||||
|  | 		_prevPos = newPos; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -0,0 +1,18 @@ | ||||||
|  | #include "..\e2daction.h" | ||||||
|  | 
 | ||||||
|  | e2d::JumpTo::JumpTo(double duration, const Point & pos, double height, int jumps) | ||||||
|  | 	: JumpBy(duration, Point(), height, jumps) | ||||||
|  | 	, _endPos(pos) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | e2d::JumpTo * e2d::JumpTo::clone() const | ||||||
|  | { | ||||||
|  | 	return new (std::nothrow) JumpTo(_duration, _endPos, _height, _jumps); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::JumpTo::_init() | ||||||
|  | { | ||||||
|  | 	JumpBy::_init(); | ||||||
|  | 	_deltaPos = _endPos - _startPos; | ||||||
|  | } | ||||||
|  | @ -6,8 +6,13 @@ e2d::Loop::Loop(Action * action, int times /* = -1 */) | ||||||
| 	, _times(0) | 	, _times(0) | ||||||
| 	, _totalTimes(times) | 	, _totalTimes(times) | ||||||
| { | { | ||||||
| 	ASSERT(_action, "Loop NULL pointer exception!"); | 	ASSERT(action, "Loop NULL pointer exception!"); | ||||||
|  | 
 | ||||||
|  | 	if (action) | ||||||
|  | 	{ | ||||||
|  | 		_action = action; | ||||||
| 		_action->retain(); | 		_action->retain(); | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Loop::~Loop() | e2d::Loop::~Loop() | ||||||
|  | @ -16,14 +21,25 @@ e2d::Loop::~Loop() | ||||||
| 
 | 
 | ||||||
| e2d::Loop * e2d::Loop::clone() const | e2d::Loop * e2d::Loop::clone() const | ||||||
| { | { | ||||||
| 	return new Loop(_action->clone()); | 	if (_action) | ||||||
|  | 	{ | ||||||
|  | 		return new (std::nothrow) Loop(_action->clone()); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		return nullptr; | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Loop::_init() | void e2d::Loop::_init() | ||||||
| { | { | ||||||
| 	Action::_init(); | 	Action::_init(); | ||||||
|  | 
 | ||||||
|  | 	if (_action) | ||||||
|  | 	{ | ||||||
| 		_action->_target = _target; | 		_action->_target = _target; | ||||||
| 		_action->_init(); | 		_action->_init(); | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Loop::_update() | void e2d::Loop::_update() | ||||||
|  | @ -36,6 +52,8 @@ void e2d::Loop::_update() | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	if (_action) | ||||||
|  | 	{ | ||||||
| 		_action->_update(); | 		_action->_update(); | ||||||
| 
 | 
 | ||||||
| 		if (_action->_isDone()) | 		if (_action->_isDone()) | ||||||
|  | @ -45,13 +63,18 @@ void e2d::Loop::_update() | ||||||
| 			Action::reset(); | 			Action::reset(); | ||||||
| 			_action->reset(); | 			_action->reset(); | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		this->stop(); | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Loop::reset() | void e2d::Loop::reset() | ||||||
| { | { | ||||||
| 	Action::reset(); | 	Action::reset(); | ||||||
| 
 | 
 | ||||||
| 	_action->reset(); | 	if (_action) _action->reset(); | ||||||
| 	_times = 0; | 	_times = 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -63,5 +86,5 @@ void e2d::Loop::onDestroy() | ||||||
| 
 | 
 | ||||||
| void e2d::Loop::_resetTime() | void e2d::Loop::_resetTime() | ||||||
| { | { | ||||||
| 	_action->_resetTime(); | 	if (_action) _action->_resetTime(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| #include "..\e2daction.h" | #include "..\e2daction.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| e2d::MoveBy::MoveBy(double duration, Vector vector) : | e2d::MoveBy::MoveBy(double duration, Vector vector) | ||||||
| 	ActionGradual(duration) | 	: ActionGradual(duration) | ||||||
| { | { | ||||||
| 	_deltaPos = vector; | 	_deltaPos = vector; | ||||||
| } | } | ||||||
|  | @ -29,10 +29,10 @@ void e2d::MoveBy::_update() | ||||||
| 
 | 
 | ||||||
| e2d::MoveBy * e2d::MoveBy::clone() const | e2d::MoveBy * e2d::MoveBy::clone() const | ||||||
| { | { | ||||||
| 	return new MoveBy(_duration, _deltaPos); | 	return new (std::nothrow) MoveBy(_duration, _deltaPos); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::MoveBy * e2d::MoveBy::reverse() const | e2d::MoveBy * e2d::MoveBy::reverse() const | ||||||
| { | { | ||||||
| 	return new MoveBy(_duration, -_deltaPos); | 	return new (std::nothrow) MoveBy(_duration, -_deltaPos); | ||||||
| } | } | ||||||
|  | @ -1,14 +1,14 @@ | ||||||
| #include "..\e2daction.h" | #include "..\e2daction.h" | ||||||
| 
 | 
 | ||||||
| e2d::MoveTo::MoveTo(double duration, Point pos) : | e2d::MoveTo::MoveTo(double duration, Point pos) | ||||||
| 	MoveBy(duration, Vector()) | 	: MoveBy(duration, Vector()) | ||||||
| { | { | ||||||
| 	_endPos = pos; | 	_endPos = pos; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::MoveTo * e2d::MoveTo::clone() const | e2d::MoveTo * e2d::MoveTo::clone() const | ||||||
| { | { | ||||||
| 	return new MoveTo(_duration, _endPos); | 	return new (std::nothrow) MoveTo(_duration, _endPos); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::MoveTo::_init() | void e2d::MoveTo::_init() | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| #include "..\e2daction.h" | #include "..\e2daction.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| e2d::OpacityBy::OpacityBy(double duration, double opacity) : | e2d::OpacityBy::OpacityBy(double duration, double opacity) | ||||||
| 	ActionGradual(duration) | 	: ActionGradual(duration) | ||||||
| { | { | ||||||
| 	_deltaVal = opacity; | 	_deltaVal = opacity; | ||||||
| } | } | ||||||
|  | @ -29,10 +29,10 @@ void e2d::OpacityBy::_update() | ||||||
| 
 | 
 | ||||||
| e2d::OpacityBy * e2d::OpacityBy::clone() const | e2d::OpacityBy * e2d::OpacityBy::clone() const | ||||||
| { | { | ||||||
| 	return new OpacityBy(_duration, _deltaVal); | 	return new (std::nothrow) OpacityBy(_duration, _deltaVal); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::OpacityBy * e2d::OpacityBy::reverse() const | e2d::OpacityBy * e2d::OpacityBy::reverse() const | ||||||
| { | { | ||||||
| 	return new OpacityBy(_duration, -_deltaVal); | 	return new (std::nothrow) OpacityBy(_duration, -_deltaVal); | ||||||
| } | } | ||||||
|  | @ -1,15 +1,15 @@ | ||||||
| #include "..\e2daction.h" | #include "..\e2daction.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| e2d::OpacityTo::OpacityTo(double duration, double opacity) : | e2d::OpacityTo::OpacityTo(double duration, double opacity) | ||||||
| 	OpacityBy(duration, 0) | 	: OpacityBy(duration, 0) | ||||||
| { | { | ||||||
| 	_endVal = opacity; | 	_endVal = opacity; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::OpacityTo * e2d::OpacityTo::clone() const | e2d::OpacityTo * e2d::OpacityTo::clone() const | ||||||
| { | { | ||||||
| 	return new OpacityTo(_duration, _endVal); | 	return new (std::nothrow) OpacityTo(_duration, _endVal); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::OpacityTo::_init() | void e2d::OpacityTo::_init() | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| #include "..\e2daction.h" | #include "..\e2daction.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| e2d::RotateBy::RotateBy(double duration, double rotation) : | e2d::RotateBy::RotateBy(double duration, double rotation) | ||||||
| 	ActionGradual(duration) | 	: ActionGradual(duration) | ||||||
| { | { | ||||||
| 	_deltaVal = rotation; | 	_deltaVal = rotation; | ||||||
| } | } | ||||||
|  | @ -29,10 +29,10 @@ void e2d::RotateBy::_update() | ||||||
| 
 | 
 | ||||||
| e2d::RotateBy * e2d::RotateBy::clone() const | e2d::RotateBy * e2d::RotateBy::clone() const | ||||||
| { | { | ||||||
| 	return new RotateBy(_duration, _deltaVal); | 	return new (std::nothrow) RotateBy(_duration, _deltaVal); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::RotateBy * e2d::RotateBy::reverse() const | e2d::RotateBy * e2d::RotateBy::reverse() const | ||||||
| { | { | ||||||
| 	return new RotateBy(_duration, -_deltaVal); | 	return new (std::nothrow) RotateBy(_duration, -_deltaVal); | ||||||
| } | } | ||||||
|  | @ -1,15 +1,15 @@ | ||||||
| #include "..\e2daction.h" | #include "..\e2daction.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| e2d::RotateTo::RotateTo(double duration, double rotation) : | e2d::RotateTo::RotateTo(double duration, double rotation) | ||||||
| 	RotateBy(duration, 0) | 	: RotateBy(duration, 0) | ||||||
| { | { | ||||||
| 	_endVal = rotation; | 	_endVal = rotation; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::RotateTo * e2d::RotateTo::clone() const | e2d::RotateTo * e2d::RotateTo::clone() const | ||||||
| { | { | ||||||
| 	return new RotateTo(_duration, _endVal); | 	return new (std::nothrow) RotateTo(_duration, _endVal); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::RotateTo::_init() | void e2d::RotateTo::_init() | ||||||
|  |  | ||||||
|  | @ -38,10 +38,10 @@ void e2d::ScaleBy::_update() | ||||||
| 
 | 
 | ||||||
| e2d::ScaleBy * e2d::ScaleBy::clone() const | e2d::ScaleBy * e2d::ScaleBy::clone() const | ||||||
| { | { | ||||||
| 	return new ScaleBy(_duration, _deltaX, _deltaY); | 	return new (std::nothrow) ScaleBy(_duration, _deltaX, _deltaY); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::ScaleBy * e2d::ScaleBy::reverse() const | e2d::ScaleBy * e2d::ScaleBy::reverse() const | ||||||
| { | { | ||||||
| 	return new ScaleBy(_duration, -_deltaX, -_deltaY); | 	return new (std::nothrow) ScaleBy(_duration, -_deltaX, -_deltaY); | ||||||
| } | } | ||||||
|  | @ -16,7 +16,7 @@ e2d::ScaleTo::ScaleTo(double duration, double scaleX, double scaleY) | ||||||
| 
 | 
 | ||||||
| e2d::ScaleTo * e2d::ScaleTo::clone() const | e2d::ScaleTo * e2d::ScaleTo::clone() const | ||||||
| { | { | ||||||
| 	return new ScaleTo(_duration, _endScaleX, _endScaleY); | 	return new (std::nothrow) ScaleTo(_duration, _endScaleX, _endScaleY); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::ScaleTo::_init() | void e2d::ScaleTo::_init() | ||||||
|  |  | ||||||
|  | @ -130,22 +130,27 @@ void e2d::Sequence::add(const std::initializer_list<Action*>& actions) | ||||||
| 
 | 
 | ||||||
| e2d::Sequence * e2d::Sequence::clone() const | e2d::Sequence * e2d::Sequence::clone() const | ||||||
| { | { | ||||||
| 	auto a = new Sequence(); | 	auto sequence = new (std::nothrow) Sequence(); | ||||||
| 	for (auto action : _actions) | 	for (const auto& action : _actions) | ||||||
| 	{ | 	{ | ||||||
| 		a->add(action->clone()); | 		if (action) | ||||||
|  | 		{ | ||||||
|  | 			sequence->add(action->clone()); | ||||||
| 		} | 		} | ||||||
| 	return a; | 	} | ||||||
|  | 	return sequence; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Sequence * e2d::Sequence::reverse() const | e2d::Sequence * e2d::Sequence::reverse() const | ||||||
| { | { | ||||||
| 	auto a = new Sequence(); | 	auto sequence = new (std::nothrow) Sequence(); | ||||||
| 	for (auto action : _actions) | 	for (const auto& action : _actions) | ||||||
| 	{ | 	{ | ||||||
| 		a->add(action->reverse()); | 		if (action) | ||||||
|  | 		{ | ||||||
|  | 			sequence->add(action->reverse()); | ||||||
| 		} | 		} | ||||||
| 	// ½«¶¯×÷˳ÐòÄæÐòÅÅÁÐ
 | 	} | ||||||
| 	a->_actions.reserve(_actions.size()); | 	sequence->_actions.reserve(_actions.size()); | ||||||
| 	return a; | 	return sequence; | ||||||
| } | } | ||||||
|  | @ -127,22 +127,27 @@ void e2d::Spawn::add(const std::initializer_list<Action*>& actions) | ||||||
| 
 | 
 | ||||||
| e2d::Spawn * e2d::Spawn::clone() const | e2d::Spawn * e2d::Spawn::clone() const | ||||||
| { | { | ||||||
| 	auto a = new Spawn(); | 	auto spawn = new (std::nothrow) Spawn(); | ||||||
| 	for (auto action : _actions) | 	for (const auto& action : _actions) | ||||||
| 	{ | 	{ | ||||||
| 		a->add(action->clone()); | 		if (action) | ||||||
|  | 		{ | ||||||
|  | 			spawn->add(action->clone()); | ||||||
| 		} | 		} | ||||||
| 	return a; | 	} | ||||||
|  | 	return spawn; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Spawn * e2d::Spawn::reverse() const | e2d::Spawn * e2d::Spawn::reverse() const | ||||||
| { | { | ||||||
| 	auto a = new Spawn(); | 	auto spawn = new (std::nothrow) Spawn(); | ||||||
| 	for (auto action : _actions) | 	for (const auto& action : _actions) | ||||||
| 	{ | 	{ | ||||||
| 		a->add(action->reverse()); | 		if (action) | ||||||
|  | 		{ | ||||||
|  | 			spawn->add(action->reverse()); | ||||||
| 		} | 		} | ||||||
| 	// ½«¶¯×÷˳ÐòÄæÐòÅÅÁÐ
 | 	} | ||||||
| 	a->_actions.reserve(_actions.size()); | 	spawn->_actions.reserve(_actions.size()); | ||||||
| 	return a; | 	return spawn; | ||||||
| } | } | ||||||
							
								
								
									
										110
									
								
								core/e2daction.h
								
								
								
								
							
							
						
						
									
										110
									
								
								core/e2daction.h
								
								
								
								
							|  | @ -64,7 +64,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init(); | 	virtual void _init(); | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update(); | 	virtual void _update(); | ||||||
| 
 | 
 | ||||||
| 	// 获取动作结束状态
 | 	// 获取动作结束状态
 | ||||||
|  | @ -118,8 +118,8 @@ class MoveBy : | ||||||
| public: | public: | ||||||
| 	// 创建相对位移动作
 | 	// 创建相对位移动作
 | ||||||
| 	MoveBy( | 	MoveBy( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		Vector vector		/* 位移向量 */ | 		Vector vector		/* 移动距离 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 获取该动作的拷贝对象
 | 	// 获取该动作的拷贝对象
 | ||||||
|  | @ -132,7 +132,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  | @ -148,8 +148,8 @@ class MoveTo : | ||||||
| public: | public: | ||||||
| 	// 创建位移动作
 | 	// 创建位移动作
 | ||||||
| 	MoveTo( | 	MoveTo( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		Point pos			/* 位移至目标点的坐标 */ | 		Point pos			/* 目的坐标 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 获取该动作的拷贝对象
 | 	// 获取该动作的拷贝对象
 | ||||||
|  | @ -164,6 +164,66 @@ protected: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | // 相对跳跃动作
 | ||||||
|  | class JumpBy : | ||||||
|  | 	public ActionGradual | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	// 创建相对跳跃动作
 | ||||||
|  | 	JumpBy( | ||||||
|  | 		double duration,		/* 持续时长 */ | ||||||
|  | 		const Vector& vec,		/* 跳跃距离 */ | ||||||
|  | 		double height,			/* 跳跃高度 */ | ||||||
|  | 		int jumps				/* 跳跃次数 */ | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 获取该动作的拷贝对象
 | ||||||
|  | 	virtual JumpBy * clone() const override; | ||||||
|  | 
 | ||||||
|  | 	// 获取该动作的倒转
 | ||||||
|  | 	virtual JumpBy * reverse() const override; | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	// 初始化动作
 | ||||||
|  | 	virtual void _init() override; | ||||||
|  | 
 | ||||||
|  | 	// 更新动作
 | ||||||
|  | 	virtual void _update() override; | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	Point	_startPos; | ||||||
|  | 	Vector	_deltaPos; | ||||||
|  | 	double	_height; | ||||||
|  | 	int		_jumps; | ||||||
|  | 	Point	_prevPos; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // 跳跃动作
 | ||||||
|  | class JumpTo : | ||||||
|  | 	public JumpBy | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	// 创建位移动作
 | ||||||
|  | 	JumpTo( | ||||||
|  | 		double duration,		/* 持续时长 */ | ||||||
|  | 		const Point& pos,		/* 目的坐标 */ | ||||||
|  | 		double height,			/* 跳跃高度 */ | ||||||
|  | 		int jumps				/* 跳跃次数 */ | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 获取该动作的拷贝对象
 | ||||||
|  | 	virtual JumpTo * clone() const override; | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	// 初始化动作
 | ||||||
|  | 	virtual void _init() override; | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	Point _endPos; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // 相对缩放动作
 | // 相对缩放动作
 | ||||||
| class ScaleBy : | class ScaleBy : | ||||||
| 	public ActionGradual | 	public ActionGradual | ||||||
|  | @ -171,13 +231,13 @@ class ScaleBy : | ||||||
| public: | public: | ||||||
| 	// 创建相对缩放动作
 | 	// 创建相对缩放动作
 | ||||||
| 	ScaleBy( | 	ScaleBy( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double scale		/* 缩放比例变化 */ | 		double scale		/* 缩放比例变化 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 创建相对缩放动作
 | 	// 创建相对缩放动作
 | ||||||
| 	ScaleBy( | 	ScaleBy( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double scaleX,		/* 横向缩放比例变化 */ | 		double scaleX,		/* 横向缩放比例变化 */ | ||||||
| 		double scaleY		/* 纵向缩放比例变化 */ | 		double scaleY		/* 纵向缩放比例变化 */ | ||||||
| 	); | 	); | ||||||
|  | @ -192,7 +252,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  | @ -210,13 +270,13 @@ class ScaleTo : | ||||||
| public: | public: | ||||||
| 	// 创建缩放动作
 | 	// 创建缩放动作
 | ||||||
| 	ScaleTo( | 	ScaleTo( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double scale		/* 缩放至目标比例 */ | 		double scale		/* 缩放至目标比例 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 创建缩放动作
 | 	// 创建缩放动作
 | ||||||
| 	ScaleTo( | 	ScaleTo( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double scaleX,		/* 横向缩放至目标比例 */ | 		double scaleX,		/* 横向缩放至目标比例 */ | ||||||
| 		double scaleY		/* 纵向缩放至目标比例 */ | 		double scaleY		/* 纵向缩放至目标比例 */ | ||||||
| 	); | 	); | ||||||
|  | @ -241,7 +301,7 @@ class OpacityBy : | ||||||
| public: | public: | ||||||
| 	// 创建透明度相对渐变动作
 | 	// 创建透明度相对渐变动作
 | ||||||
| 	OpacityBy( | 	OpacityBy( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double opacity		/* 透明度相对变化值 */ | 		double opacity		/* 透明度相对变化值 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | @ -255,7 +315,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  | @ -271,7 +331,7 @@ class OpacityTo : | ||||||
| public: | public: | ||||||
| 	// 创建透明度渐变动作
 | 	// 创建透明度渐变动作
 | ||||||
| 	OpacityTo( | 	OpacityTo( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double opacity		/* 透明度渐变至目标值 */ | 		double opacity		/* 透明度渐变至目标值 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | @ -294,7 +354,7 @@ class FadeIn : | ||||||
| public: | public: | ||||||
| 	// 创建淡入动作
 | 	// 创建淡入动作
 | ||||||
| 	FadeIn( | 	FadeIn( | ||||||
| 		double duration		/* 动作持续时长 */ | 		double duration		/* 持续时长 */ | ||||||
| 	) | 	) | ||||||
| 	: OpacityTo(duration, 1)  | 	: OpacityTo(duration, 1)  | ||||||
| 	{ | 	{ | ||||||
|  | @ -309,7 +369,7 @@ class FadeOut : | ||||||
| public: | public: | ||||||
| 	// 创建淡出动作
 | 	// 创建淡出动作
 | ||||||
| 	FadeOut( | 	FadeOut( | ||||||
| 		double duration		/* 动作持续时长 */ | 		double duration		/* 持续时长 */ | ||||||
| 	) | 	) | ||||||
| 	: OpacityTo(duration, 0)  | 	: OpacityTo(duration, 0)  | ||||||
| 	{ | 	{ | ||||||
|  | @ -324,7 +384,7 @@ class RotateBy : | ||||||
| public: | public: | ||||||
| 	// 创建相对旋转动作
 | 	// 创建相对旋转动作
 | ||||||
| 	RotateBy( | 	RotateBy( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double rotation		/* 旋转角度变化值 */ | 		double rotation		/* 旋转角度变化值 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | @ -338,7 +398,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  | @ -354,7 +414,7 @@ class RotateTo : | ||||||
| public: | public: | ||||||
| 	// 创建旋转动作
 | 	// 创建旋转动作
 | ||||||
| 	RotateTo( | 	RotateTo( | ||||||
| 		double duration,	/* 动作持续时长 */ | 		double duration,	/* 持续时长 */ | ||||||
| 		double rotation		/* 旋转角度至目标值 */ | 		double rotation		/* 旋转角度至目标值 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | @ -387,7 +447,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  | @ -421,7 +481,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| 	// 重置动作时间
 | 	// 重置动作时间
 | ||||||
|  | @ -451,7 +511,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  | @ -518,7 +578,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| 	// 重置动作时间
 | 	// 重置动作时间
 | ||||||
|  | @ -589,7 +649,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| 	// 重置动作时间
 | 	// 重置动作时间
 | ||||||
|  | @ -639,7 +699,7 @@ protected: | ||||||
| 	// 初始化动作
 | 	// 初始化动作
 | ||||||
| 	virtual void _init() override; | 	virtual void _init() override; | ||||||
| 
 | 
 | ||||||
| 	// 执行动作
 | 	// 更新动作
 | ||||||
| 	virtual void _update() override; | 	virtual void _update() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
|  | @ -199,6 +199,8 @@ | ||||||
|     <ClCompile Include="..\..\core\Action\Action.cpp" /> |     <ClCompile Include="..\..\core\Action\Action.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Action\CallFunc.cpp" /> |     <ClCompile Include="..\..\core\Action\CallFunc.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Action\Delay.cpp" /> |     <ClCompile Include="..\..\core\Action\Delay.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\JumpBy.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\JumpTo.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Action\MoveBy.cpp" /> |     <ClCompile Include="..\..\core\Action\MoveBy.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Action\Animate.cpp" /> |     <ClCompile Include="..\..\core\Action\Animate.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Action\MoveTo.cpp" /> |     <ClCompile Include="..\..\core\Action\MoveTo.cpp" /> | ||||||
|  |  | ||||||
|  | @ -216,6 +216,12 @@ | ||||||
|     <ClCompile Include="..\..\core\Common\Animation.cpp"> |     <ClCompile Include="..\..\core\Common\Animation.cpp"> | ||||||
|       <Filter>Common</Filter> |       <Filter>Common</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\JumpBy.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\JumpTo.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClInclude Include="..\..\core\easy2d.h" /> |     <ClInclude Include="..\..\core\easy2d.h" /> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue