From 054b8183cbf8cbce1f4e126c69d00c7144b9cd98 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Mon, 9 Oct 2017 10:28:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E7=B2=BE=E7=81=B5=E7=9A=84=E7=A7=BB=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Easy2D/Object/BatchSprite.cpp | 68 +++++++++++++++++++++++++++++++++++ Easy2D/easy2d.h | 13 +++++++ 2 files changed, 81 insertions(+) diff --git a/Easy2D/Object/BatchSprite.cpp b/Easy2D/Object/BatchSprite.cpp index cd36394e..56ff7891 100644 --- a/Easy2D/Object/BatchSprite.cpp +++ b/Easy2D/Object/BatchSprite.cpp @@ -180,3 +180,71 @@ void BatchSprite::setImage(Image * image) s->setImage(image); } } + +void BatchSprite::setX(int x) +{ + // 计算相对移动位置 + int var = x - getX(); + // 移动所有子节点的位置 + for (auto s : m_vSprites) + { + s->move(var, 0); + } + RectNode::setX(x); +} + +void BatchSprite::setY(int y) +{ + // 计算相对移动位置 + int var = y - getY(); + // 移动所有子节点的位置 + for (auto s : m_vSprites) + { + s->move(0, var); + } + RectNode::setX(y); +} + +void BatchSprite::setPos(int x, int y) +{ + // 计算相对移动位置 + CPoint var(x - getX(), y - getY()); + // 移动所有子节点的位置 + for (auto s : m_vSprites) + { + s->move(var); + } + RectNode::setPos(x, y); +} + +void BatchSprite::setPos(CPoint p) +{ + // 计算相对移动位置 + CPoint var(p - getPos()); + // 移动所有子节点的位置 + for (auto s : m_vSprites) + { + s->move(var); + } + RectNode::setPos(p); +} + +void BatchSprite::move(int x, int y) +{ + // 移动所有子节点的位置 + for (auto s : m_vSprites) + { + s->move(x, y); + } + RectNode::setPos(x, y); +} + +void BatchSprite::move(CVector v) +{ + // 移动所有子节点的位置 + for (auto s : m_vSprites) + { + s->move(v); + } + RectNode::setPos(v); +} \ No newline at end of file diff --git a/Easy2D/easy2d.h b/Easy2D/easy2d.h index e39313bf..20126179 100644 --- a/Easy2D/easy2d.h +++ b/Easy2D/easy2d.h @@ -851,6 +851,19 @@ public: // 同时修改所有精灵的图片 virtual void setImage(Image * image) override; + // 设置节点横坐标 + virtual void setX(int x) override; + // 设置节点纵坐标 + virtual void setY(int y) override; + // 设置节点坐标 + virtual void setPos(int x, int y) override; + // 设置节点坐标 + virtual void setPos(CPoint p) override; + // 移动节点 + virtual void move(int x, int y) override; + // 移动节点 + virtual void move(CVector v) override; + virtual float getScaleX() const override; virtual float getScaleY() const override; virtual float getOpacity() const override;