自定义ToggleButton

//    作者    :    Bingzhao Chen
//    创建时间:    2016/7/1 11:38
#ifndef mToggleButton_h__
#define mToggleButton_h__

#include"cocos2d.h"
using namespace cocos2d;

class mToggleButton : public Node{
private:
	MenuItemToggle* toggleItem;
public:
	static mToggleButton* createWithSprite(const ccMenuCallback& callback,Sprite* normal,Sprite* selected);

	inline unsigned int getSelectedIndex() const { return toggleItem->getSelectedIndex(); };

	MenuItem* getSelectedItem();
private:
	mToggleButton();
	~mToggleButton();
	virtual bool init(const ccMenuCallback& callback,Sprite* selected);
};
#endif // mToggleButton_h__


#include "mToggleButton.h"

mToggleButton::mToggleButton()
	:toggleItem(nullptr)
{

}

mToggleButton::~mToggleButton()
{

}
mToggleButton* mToggleButton::createWithSprite(const ccMenuCallback& callback,Sprite* selected)
{
	mToggleButton *pRet = new(std::nothrow)mToggleButton();
	if (pRet && pRet->init(callback,normal,selected)){
		pRet->autorelease();
		return pRet;
	}
	else
	{
		delete pRet;
		pRet = nullptr;
		return nullptr;
	}
}





bool mToggleButton::init(const ccMenuCallback& callback,Sprite* selected)
{
	if (!Node::init()){
		return false;
	}
	auto normalItem = MenuItemSprite::create(normal,normal);
	auto selectedItem = MenuItemSprite::create(selected,selected);
	toggleItem = MenuItemToggle::createWithCallback(callback,normalItem,selectedItem,NULL);
	toggleItem->setPosition(Vec2::ZERO);
	auto menu = Menu::create(toggleItem,NULL);
	menu->setPosition(Vec2::ZERO);
	this->addChild(menu);
	return true;

}

MenuItem* mToggleButton::getSelectedItem()
{
	return toggleItem->getSelectedItem();
}

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...