diff --git a/Easy2D/Action/Action.cpp b/Easy2D/Action/Action.cpp index 1d3de0cb..1320f335 100644 --- a/Easy2D/Action/Action.cpp +++ b/Easy2D/Action/Action.cpp @@ -71,6 +71,11 @@ Action * Action::reverse() const return nullptr; } +Sprite * Action::getTarget() +{ + return m_pTargetSprite; +} + void Action::_reset() { m_bEnding = false; diff --git a/Easy2D/Object/Sprite.cpp b/Easy2D/Object/Sprite.cpp index 6fe1e9fa..726fd79f 100644 --- a/Easy2D/Object/Sprite.cpp +++ b/Easy2D/Object/Sprite.cpp @@ -76,7 +76,7 @@ void Sprite::addAction(Action * action) void Sprite::resumeAction(Action * action) { - if (action->m_pTargetSprite == this) + if (action->getTarget() == this) { ActionManager::resumeAction(action); } @@ -84,7 +84,7 @@ void Sprite::resumeAction(Action * action) void Sprite::pauseAction(Action * action) { - if (action->m_pTargetSprite == this) + if (action->getTarget() == this) { ActionManager::pauseAction(action); } @@ -92,7 +92,7 @@ void Sprite::pauseAction(Action * action) void Sprite::stopAction(Action * action) { - if (action->m_pTargetSprite == this) + if (action->getTarget() == this) { ActionManager::stopAction(action); } diff --git a/Easy2D/easy2d.h b/Easy2D/easy2d.h index 14e93965..cf22ce7f 100644 --- a/Easy2D/easy2d.h +++ b/Easy2D/easy2d.h @@ -1101,6 +1101,8 @@ public: virtual Action * copy() const = 0; // 获取一个新的逆向动作 virtual Action * reverse() const; + // 获取执行该动作的目标 + virtual Sprite * getTarget(); protected: bool m_bRunning;