2017-09-10 23:56:52 +08:00
|
|
|
|
#include "..\..\Easy2d.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ImageButton::ImageButton() :
|
|
|
|
|
|
m_pNormalImage(nullptr),
|
|
|
|
|
|
m_pMouseInImage(nullptr),
|
|
|
|
|
|
m_pSelectedImage(nullptr),
|
|
|
|
|
|
m_pUnableImage(nullptr)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_nWidth = 0;
|
|
|
|
|
|
m_nHeight = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ImageButton::ImageButton(Image * image) :
|
|
|
|
|
|
ImageButton()
|
|
|
|
|
|
{
|
2017-09-12 12:53:34 +08:00
|
|
|
|
setNormal(image); // <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1>ͼƬ
|
2017-09-10 23:56:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ImageButton::~ImageButton()
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
|
|
|
|
|
|
SAFE_RELEASE(m_pNormalImage);
|
|
|
|
|
|
SAFE_RELEASE(m_pMouseInImage);
|
|
|
|
|
|
SAFE_RELEASE(m_pSelectedImage);
|
|
|
|
|
|
SAFE_RELEASE(m_pUnableImage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::_onNormal()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_pNormalImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pNormalImage->_onDraw();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::_onMouseIn()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_pMouseInImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pMouseInImage->_onDraw();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
_onNormal();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::_onSelected()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_pSelectedImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pSelectedImage->_onDraw();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
_onNormal();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::_onDisable()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_pUnableImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pUnableImage->_onDraw();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
_onNormal();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-09-12 12:53:34 +08:00
|
|
|
|
void ImageButton::setNormal(Image * image)
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (image)
|
|
|
|
|
|
{
|
|
|
|
|
|
// ԭͼƬ<CDBC><C6AC><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
|
|
|
|
|
|
SAFE_RELEASE(m_pNormalImage);
|
|
|
|
|
|
// <20><EFBFBD>ͼƬ
|
|
|
|
|
|
m_pNormalImage = image;
|
|
|
|
|
|
// <20><>ͼƬ<CDBC><C6AC><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
|
|
|
|
|
|
m_pNormalImage->retain();
|
|
|
|
|
|
// <20><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ͼƬλ<C6AC><CEBB>
|
|
|
|
|
|
resetImagePosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-09-12 12:53:34 +08:00
|
|
|
|
void ImageButton::setMouseIn(Image * image)
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (image)
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFE_RELEASE(m_pMouseInImage);
|
|
|
|
|
|
m_pMouseInImage = image;
|
|
|
|
|
|
m_pMouseInImage->retain();
|
|
|
|
|
|
resetImagePosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-09-12 12:53:34 +08:00
|
|
|
|
void ImageButton::setSelected(Image * image)
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (image)
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFE_RELEASE(m_pSelectedImage);
|
|
|
|
|
|
m_pSelectedImage = image;
|
|
|
|
|
|
m_pSelectedImage->retain();
|
|
|
|
|
|
resetImagePosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-09-12 12:53:34 +08:00
|
|
|
|
void ImageButton::setUnable(Image * image)
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (image)
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFE_RELEASE(m_pUnableImage);
|
|
|
|
|
|
m_pUnableImage = image;
|
|
|
|
|
|
m_pUnableImage->retain();
|
|
|
|
|
|
resetImagePosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::setX(int x)
|
|
|
|
|
|
{
|
|
|
|
|
|
Node::setX(x);
|
|
|
|
|
|
resetImagePosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::setY(int y)
|
|
|
|
|
|
{
|
|
|
|
|
|
Node::setY(y);
|
|
|
|
|
|
resetImagePosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::setPos(int x, int y)
|
|
|
|
|
|
{
|
|
|
|
|
|
Node::setPos(x, y);
|
|
|
|
|
|
resetImagePosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImageButton::resetImagePosition()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_pNormalImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD>趨<EFBFBD><E8B6A8>ť<EFBFBD><C5A5>С
|
|
|
|
|
|
m_nWidth = m_pNormalImage->getWidth();
|
|
|
|
|
|
m_nHeight = m_pNormalImage->getHeight();
|
|
|
|
|
|
// <20><><EFBFBD>ݰ<EFBFBD>ťλ<C5A5>ú<EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬλ<C6AC>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
m_pNormalImage->setPos(m_nX, m_nY);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (m_pMouseInImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pMouseInImage->setPos(
|
|
|
|
|
|
m_nX + (m_nWidth - m_pMouseInImage->getWidth()) / 2,
|
|
|
|
|
|
m_nY + (m_nHeight - m_pMouseInImage->getHeight()) / 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (m_pSelectedImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pSelectedImage->setPos(
|
|
|
|
|
|
m_nX + (m_nWidth - m_pSelectedImage->getWidth()) / 2,
|
|
|
|
|
|
m_nY + (m_nHeight - m_pSelectedImage->getHeight()) / 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (m_pUnableImage)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pUnableImage->setPos(
|
|
|
|
|
|
m_nX + (m_nWidth - m_pUnableImage->getWidth()) / 2,
|
|
|
|
|
|
m_nY + (m_nHeight - m_pUnableImage->getHeight()) / 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|