创建一个按钮并添加:
MenuItemImage* first = MenuItemImage::create("10.png","10_on.png",
CC_CALLBACK_1(Hello::second,this));
first->setPosition(Vec2(965,200));
Menu* topMenu = Menu::create(first,nullptr);
topMenu->setPosition(Vec2::ZERO);
addChild(topMenu);
回调函数:
void Hello::second(Ref* pSender)
{
auto four = three::create();
addChild(four,3,"four");
}
其中three是写在.h文件里:
class three :public Layer
{
public:
bool init();//必须的
void Layer();//必须的
void Buttonn();
void onClose(Ref* pSender); //关闭
CREATE_FUNC(three);//必须的
private:
EventListenerTouchOneByOne* m_listener; //监听事件,作用于关闭按钮
};
bool three::init()
{
if (!Layer::init()) return false;
auto callback = [](Touch *, Event *)
{
return true;
};
m_listener = EventListenerTouchOneByOne::create();
m_listener->onTouchBegan = callback;
m_listener->setSwallowTouches(true);
_eventDispatcher->addEventListenerWithSceneGraphPriority(m_listener, this);
/*自己可以添加其他函数*/
Layer();
Button();
return true;
}
void three::Buttonn()
{
auto winSize = Director::getInstance()->getWinSize();//获取当前游戏窗口的大小
//退出
MenuItemImage* onClose = MenuItemImage::create("guanbi.png", "guanbi-on.png",
CC_CALLBACK_1(three::onClose, this));
onClose->setPosition(Vec2(640,360));
}
Menu* topMenu = Menu::create(onClose,nullptr);
topMenu->setPosition(Vec2::ZERO);
addChild(topMenu);
其中Layer()和Buttonn()自定义也可以 onclose()用于关闭且返回之前的场景
void three::onClose(Ref* pSender)
{
removeAllChildren();
_eventDispatcher->removeEventListener(m_listener);
}
至此就大功告成了