#include <iostream>
#include "cocos2d.h"
USING_NS_CC;
class MenuTest:public Layer{
public:
static Scene* createScene();
virtual bool init();
void menuPrintCallback();
void menuItemToggle(Ref* pSender);
void menuCloseCallback(Ref* pSender);
CREATE_FUNC(MenuTest);
};
#include "MenuTest.h"
Scene* MenuTest::createScene(){
auto scene = Scene::create();
auto layer = MenuTest::create();
scene->addChild(layer);
return scene;
}
bool MenuTest::init(){
if(!Layer::init()){
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto label = Label::createWithSystemFont("MenuItemLabel","Marker Felt",32);
auto labelItem = MenuItemLabel::create(label, CC_CALLBACK_0(MenuTest::menuPrintCallback, this));
labelItem->setPosition(visibleSize.width / 2,visibleSize.height * 0.9);
MenuItemFont::setFontName("Courier New");
MenuItemFont::setFontSize(64);
auto fontItem = MenuItemFont::create("MenuItemFont",CC_CALLBACK_0(MenuTest::menuPrintCallback, this));
fontItem->setPosition(visibleSize.width / 2,visibleSize.height * 0.7);
auto closeNormal = Sprite::create("CloseNormal.png");
auto closeSelected = Sprite::create("CloseSelected.png");
auto closeSpriteItem = MenuItemSprite::create(closeNormal,closeSelected,CC_CALLBACK_1(MenuTest::menuCloseCallback,this));
closeSpriteItem->setPosition(visibleSize.width / 2,visibleSize.height * 0.5);
//图片菜单项的使用
//创建MenuItemImage菜单项
//第一个参数是正常状态的纹理图片,第二个参数是选择状态下的纹理图片,第三个参数是回调函数
auto closeItem = MenuItemImage::create("CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(MenuTest::menuCloseCallback, this));
closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width / 2,origin.y + closeItem->getContentSize().height / 2));
//触发器菜单项的使用
//创建MenuItemToggle菜单项
//第一个参数是回调函数,第二个参数和第三个参数都是MenuItem对象
auto toggleItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuTest::menuItemToggle, this), MenuItemFont::create("On"),MenuItemFont::create("Off"),NULL);
toggleItem->setPosition(visibleSize.width / 2,visibleSize.height * 0.1);
auto menu = Menu::create(labelItem,fontItem,closeSpriteItem,toggleItem,closeItem,NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu);
return true;
}
//单击MenuItemLabel和MenuItemFont菜单项的回调函数
void MenuTest::menuPrintCallback(){
log("callback menuPrintCallback-->");
}
void MenuTest::menuItemToggle(Ref* pSender){
//获得单击的菜单的索引,默认情况下,On = 1,Off = 0
log("selected index:%d",dynamic_cast<MenuItemToggle*>(pSender)->getSelectedIndex());
}
void MenuTest::menuCloseCallback(Ref* pSender){
Director::getInstance()->end();
#if(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}