修复了批量精灵的移动问题

This commit is contained in:
Nomango 2017-10-09 10:28:52 +08:00
parent cbfaaeb497
commit 054b8183cb
2 changed files with 81 additions and 0 deletions

View File

@ -180,3 +180,71 @@ void BatchSprite::setImage(Image * image)
s->setImage(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);
}

View File

@ -851,6 +851,19 @@ public:
// 同时修改所有精灵的图片 // 同时修改所有精灵的图片
virtual void setImage(Image * image) override; 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 getScaleX() const override;
virtual float getScaleY() const override; virtual float getScaleY() const override;
virtual float getOpacity() const override; virtual float getOpacity() const override;