From d2e083c5ca68bc8c536d1c8d067f407bf80199e1 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Mon, 9 Oct 2017 10:19:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=9F=A9=E5=BD=A2=E7=A2=B0?= =?UTF-8?q?=E6=92=9E=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Easy2D/Object/RectNode.cpp | 3 ++- Easy2D/Object/Sprite.cpp | 3 ++- Easy2D/easy2d.h | 42 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/Easy2D/Object/RectNode.cpp b/Easy2D/Object/RectNode.cpp index a4c6465d..795c7a8c 100644 --- a/Easy2D/Object/RectNode.cpp +++ b/Easy2D/Object/RectNode.cpp @@ -12,7 +12,8 @@ RectNode::~RectNode() bool RectNode::isCollisionWith(RectNode * rectNode) const { - return IntersectRect(NULL, &m_Rect, &rectNode->m_Rect); + static CRect rt; + return IntersectRect(&rt, &m_Rect, &rectNode->m_Rect); } bool RectNode::isPointIn(CPoint p) const diff --git a/Easy2D/Object/Sprite.cpp b/Easy2D/Object/Sprite.cpp index 0daf260d..620d8a1c 100644 --- a/Easy2D/Object/Sprite.cpp +++ b/Easy2D/Object/Sprite.cpp @@ -60,7 +60,8 @@ void Sprite::setImage(Image * image) bool Sprite::isCollisionWith(Sprite * sprite) { - return IntersectRect(new CRect(), &getRect(), &sprite->getRect()); + static CRect rt; + return IntersectRect(&rt, &getRect(), &sprite->getRect()); } void Sprite::addAction(Action * action) diff --git a/Easy2D/easy2d.h b/Easy2D/easy2d.h index 214a6300..e39313bf 100644 --- a/Easy2D/easy2d.h +++ b/Easy2D/easy2d.h @@ -564,6 +564,19 @@ public: // 清空所有子节点 void clearAllChildren(); + // 设置节点横坐标 + 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; + protected: std::vector m_vChildren; @@ -598,33 +611,58 @@ public: RectNode(); ~RectNode(); + // 判断两节点是否碰撞 virtual bool isCollisionWith(RectNode * rectNode) const; + // 判断点是否在节点内 virtual bool isPointIn(CPoint p) const; - virtual void setWindowCenterX(); - virtual void setWindowCenterY(); + // 设置节点在窗口居中 virtual void setWindowCenter(); + // 设置节点在窗口横向居中 + virtual void setWindowCenterX(); + // 设置节点在窗口纵向居中 + virtual void setWindowCenterY(); + // 获取节点横坐标 virtual int getX() const override; + // 获取节点纵坐标 virtual int getY() const override; + // 获取节点坐标 virtual CPoint getPos() const override; + // 获取节点宽度 virtual int getWidth() const; + // 获取节点高度 virtual int getHeight() const; + // 获取节点大小 virtual CSize getSize() const; + // 获取节点所在的矩形 virtual CRect getRect() const; + // 设置节点横坐标 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 void setWidth(int width); + // 设置节点高度 virtual void setHeight(int height); + // 设置节点大小 virtual void setSize(int width, int height); + // 设置节点大小 virtual void setSize(CSize size); + // 设置节点所在的矩形 virtual void setRect(int x1, int y1, int x2, int y2); + // 设置节点所在的矩形 virtual void setRect(CPoint leftTop, CPoint rightBottom); + // 设置节点所在的矩形 virtual void setRect(CRect rect); protected: