多个图片按钮用多个Layout,Layout的位置设置一样,点击事件后设置Layout的setVisiable 属性即可实现按钮点击不同显示区域内容显示不同;
实现图片按钮点击后呈现点击状态:
将按钮变量设置为Private成员变量,按钮点击后的回调事件调用两个按钮图片的更改。
例如:
m_pBtnPlay = Button::create("wanfa.png", "wanfa_on.png");
m_pBtnPlay->addClickEventListener(CC_CALLBACK_1(Helloword::RulePlaySprite, this));//点击事件
m_pBtnPlay->setPosition(Vec2(325, 572));
addChild(m_pBtnPlay);
回调方法写上:
m_pBtnPlay->loadTextureNormal("wanfa_on.png");//正常状态下
m_pBtnPlay->loadTexturePressed("wanfa_on.png");//点击状态下
这样按钮就可以在点击后呈现点击图片
同一显示框显示用Layout的setVisible就可以了
实现点击背景后菜单消失:
MenuItemImage* BrandingItem = MenuItemImage::create("chong.png", "chong-on.png", "Hall/function/chong_on.png",
CC_CALLBACK_1(CHallScene::chong, this));
BrandingItem->setPosition(Vec2(870, 640));
上面是一个图片按钮,添加到菜单:
/*菜单添加到Layout里面其中m_xuanx已经声明为成员*/
m_xuanx = Layout::create();
//m_xuanx->setPosition(Vec2(900,640));
addChild(m_xuanx);
m_topMenu = Menu::create(BrandingItem,nullptr);
m_topMenu->setPosition(Vec2::ZERO);
m_xuanx->addChild(m_topMenu, 10);
m_xuanx->setPosition(Vec2());
m_xuanx->setVisible(false);//设置不可见
选项按钮的回调函数写上(选项按钮没写)
m_xuanx->setVisible(true);
就可以实现点击按钮后菜单出现。
点击背景图片后菜单消失:
添加一个监听事件:
bglistener = EventListenerTouchOneByOne::create();//创建背景单点触摸事件监听器
bglistener->onTouchBegan = CC_CALLBACK_2(CHallScene::onTouchBegan,this);//触摸开始
bglistener->setSwallowTouches(true);//不想下吞并触摸
_eventDispatcher->addEventListenerWithSceneGraphPriority(bglistener,this);
onTouchBegan回调:
bool Hollword::onTouchBegan(CCTouch* pTouch, CCEvent* pEvent)
{
auto pos = pTouch->getLocation();
int i = 0;
if (m_xuanx->isVisible())
{
m_caidan->setVisible(false);
m_xuanx->setVisible(false);
}
return false;
}
这样就可以实现菜单点击按钮出现菜单,点击背景菜单消失