大佬教程收集整理的这篇文章主要介绍了Cocos2d-x MenuItemToggle 实现开关按钮,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
最近做自己的塔防游戏的时候用到的,作为记录记载下来。
@H_51_1@menuItemToggle可以实现按钮的开关两种状态,类似”ON”->”OFF”.void SetTingScene::addMenuItems(){
auto size=Director::geTinstance()->getWinSize();
/*添加返回按钮*/
auto BACkMenuItem=MenuItemImage::create(
"SetTingSceneImages/BACkMenuItem_1.png","SetTingSceneImages/BACkMenuItem_2.png",CC_CALLBACK_1(SetTingScene::menuBACkCallBACk,this));
BACkMenuItem->setPosition(Point(size.width-BACkMenuItem->getContentSize().width/2,BACkMenuItem->getContentSize().height/2));
this->addChild(BACkMenuItem,1);
auto startWidth=BACkMenuItem->getContentSize().width+80; //起始横坐标(左上方第一个)
auto startHeight=size.height-BACkMenuItem->getContentSize().height/2-20; //起始纵坐标
/*添加"打开\关闭音乐"按钮*/
_openMusicItem=MenuItemImage::create(
"SetTingSceneImages/openMusicItem_1.png","SetTingSceneImages/openMusicItem_2.png"
);
_closeMusicItem=MenuItemImage::create(
"SetTingSceneImages/closeMusicItem_1.png","SetTingSceneImages/closeMusicItem_2.png");
//组合按钮
auto setMusicMenuToggle=MenuItemToggle::createWithCallBACk(CC_CALLBACK_1(SetTingScene::menuSetMusicCallBACk,this),_openMusicItem,_closeMusicItem,null);
setMusicMenuToggle->setPosition(Point(startWidth,startHeight));
/*添加“打开|关闭音效”按钮*/
_openEffectItem=MenuItemImage::create(
"SetTingSceneImages/openEffectItem_1.png","SetTingSceneImages/openEffectItem_2.png");
_closeEffectItem=MenuItemImage::create(
"SetTingSceneImages/openEffectItem_1.png","SetTingSceneImages/openEffectItem_2.png");
//组合按钮
auto setEffectMenuToggle=MenuItemToggle::createWithCallBACk(CC_CALLBACK_1(SetTingScene::menuSetEffectCallBACk,_openEffectItem,_closeEffectItem,null);
setEffectMenuToggle->setPosition(Point(300,400));
/*添加“打开|关闭血条”按钮*/
_openHpBarItem=MenuItemImage::create(
"SetTingSceneImages/openHpBarItem_1.png","SetTingSceneImages/openHpBarItem_2.png");
_closeHpBarItem=MenuItemImage::create(
"SetTingSceneImages/openHpBarItem_1.png","SetTingSceneImages/openHpBarItem_2.png");
//组合按钮
auto setHpBarMenuToggle=MenuItemToggle::createWithCallBACk(CC_CALLBACK_1(SetTingScene::menuSetHpBarCallBACk,_openHpBarItem,_closeHpBarItem,null);
setHpBarMenuToggle->setPosition(Point(0,0));
//总菜单
auto menu=Menu::create(setMusicMenuToggle,setEffectMenuToggle,setHpBarMenuToggle,null);
menu->setPosition(Point(0,0));
this->addChild(menu,1);
}
首先, 创建两个 MenuItemImage,然后把他们都添加到了 MenuItemToggle 里面。这个类会管理当前应该显示的菜单项,同时会在开关元素之间进行一些切换。
注意,当创建 MenuItemImage 的时候,最好不设置回调函数(也可以把回调函数设置成了NULL),而是为 MenuItemToggle 类设置了回调函数。这样当 MenuItemImage 在 MenuItemToggle 中的时候,在 MenuItemImage 上的任何 SELEctor 都不会被调用,而只有 MenuItemToggle的SELEctor会被调用。当然,我们可以很容易地在回调函数里面区分,到底哪个菜单项是可见的。
也就是在MenuItemToggle这一层抽象层上,编写回调函数的时候不需要考虑下一层的具体,而是只是完成它的回调函数。
我们在创建MenuItemImage项的时候不用设置坐标,而是指定MenuItemToggle的坐标。然后把Toggle添加到Menu里,这里有一个设置坐标的细节。 为了设置坐标方便,一般把Menu坐标设置为Point::ZERO,这样在向Menu添加菜单项的时候菜单项(MenuItemxxX)就可以直接写相对于实际屏幕的坐标了.
以上是大佬教程为你收集整理的Cocos2d-x MenuItemToggle 实现开关按钮全部内容,希望文章能够帮你解决Cocos2d-x MenuItemToggle 实现开关按钮所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。