From a9ddbf73846d256619828e5e6db6eccdf12dd564 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Tue, 5 Dec 2017 08:31:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E7=9A=84=E4=B8=AD=E5=BF=83=E7=82=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Easy2D/Node/EButton.cpp | 31 +++++++++++++++++++++++++++++++ Easy2D/enodes.h | 19 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/Easy2D/Node/EButton.cpp b/Easy2D/Node/EButton.cpp index 80605aff..e80cde92 100644 --- a/Easy2D/Node/EButton.cpp +++ b/Easy2D/Node/EButton.cpp @@ -71,6 +71,7 @@ void e2d::EButton::setNormal(ENode * normal) if (normal) { this->addChild(normal); + normal->setPivot(m_fPivotX, m_fPivotY); } m_pNormal = normal; @@ -91,6 +92,7 @@ void e2d::EButton::setMouseOver(ENode * mouseover) if (mouseover) { this->addChild(mouseover); + mouseover->setPivot(m_fPivotX, m_fPivotY); } m_pMouseover = mouseover; _updateVisiable(); @@ -110,6 +112,7 @@ void e2d::EButton::setSelected(ENode * selected) if (selected) { this->addChild(selected); + selected->setPivot(m_fPivotX, m_fPivotY); } m_pSelected = selected; _updateVisiable(); @@ -129,6 +132,7 @@ void e2d::EButton::setDisabled(ENode * disabled) if (disabled) { this->addChild(disabled); + disabled->setPivot(m_fPivotX, m_fPivotY); } m_pDisabled = disabled; _updateVisiable(); @@ -152,6 +156,33 @@ void e2d::EButton::setCallback(const BUTTON_CLICK_CALLBACK & callback) m_Callback = callback; } +void e2d::EButton::setPivotX(float pivotX) +{ + ENode::setPivotX(pivotX); + if (m_pNormal) m_pNormal->setPivotX(pivotX); + if (m_pMouseover) m_pMouseover->setPivotX(pivotX); + if (m_pSelected) m_pSelected->setPivotX(pivotX); + if (m_pDisabled) m_pDisabled->setPivotX(pivotX); +} + +void e2d::EButton::setPivotY(float pivotY) +{ + ENode::setPivotY(pivotY); + if (m_pNormal) m_pNormal->setPivotY(pivotY); + if (m_pMouseover) m_pMouseover->setPivotY(pivotY); + if (m_pSelected) m_pSelected->setPivotY(pivotY); + if (m_pDisabled) m_pDisabled->setPivotY(pivotY); +} + +void e2d::EButton::setPivot(float pivotX, float pivotY) +{ + ENode::setPivot(pivotX, pivotY); + if (m_pNormal) m_pNormal->setPivot(pivotX, pivotY); + if (m_pMouseover) m_pMouseover->setPivot(pivotX, pivotY); + if (m_pSelected) m_pSelected->setPivot(pivotX, pivotY); + if (m_pDisabled) m_pDisabled->setPivot(pivotX, pivotY); +} + void e2d::EButton::_setStatus(STATUS status) { if (m_eStatus != status) diff --git a/Easy2D/enodes.h b/Easy2D/enodes.h index be56405d..515c0361 100644 --- a/Easy2D/enodes.h +++ b/Easy2D/enodes.h @@ -647,6 +647,25 @@ public: const BUTTON_CLICK_CALLBACK & callback ); + // 设置中心点的横向位置 + // 默认为 0, 范围 [0, 1] + virtual void setPivotX( + float pivotX + ) override; + + // 设置中心点的纵向位置 + // 默认为 0, 范围 [0, 1] + virtual void setPivotY( + float pivotY + ) override; + + // 设置中心点位置 + // 默认为 (0, 0), 范围 [0, 1] + virtual void setPivot( + float pivotX, + float pivotY + ) override; + protected: enum STATUS { NORMAL, MOUSEOVER, SELECTED };