#include "MYMenu.h" #include "AppMacros.h" CCScene * MYMenu::scene() { scene = CCScene::create(); MYMenu * layer = create(); scene->addChild(layer); return scene; } //五种菜单 #if 0 CCMenuItemFont; CCMenuItemImage; CCMenuItemLabel; CCMenuItemSprite; CCMenuItemToggle; #endif bool init() { CCLayer::init(); //第1步:创建一个菜单 menu = CCMenu::create(); //第2步:创建菜单项 //可以将下面的两行合并 CCMenuItem * fontItem = CCMenuItemFont::create("fontmenu"); fontItem->setTarget(this,138); font-family:新宋体; font-size:9.5pt">menu_selector(menuCallBack)); //显示menuItem在界面中的显示条项 CCLog("first Item :x = %g y = %g",fontItem->getPositionX(),0); font-family:新宋体; font-size:9.5pt">getPositionY()); "first Item Anchor x = %g,y = %g",0); font-family:新宋体; font-size:9.5pt">getAnchorPoint().x,0); font-family:新宋体; font-size:9.5pt">getAnchorPoint().y); "first Item ContentSize width %g hight %g", fontItem->getContentSize().width,0); font-family:新宋体; font-size:9.5pt">getContentSize().height); //创建第二个Menu条项 CCMenuItem * fontItem2 = "fontmenu2"); fontItem2->menuCallBack)); //设置Menu在界面中的显示状态 //menu->alignItemsVerticallyWithPadding(40); //显示menu在界面中的显示特征 "---------------------------------------------"); "Menu:x = %g,menu->"Menu Anchor x = %g y = %g",21); font-family:新宋体; font-size:9.5pt">"Menu ContentSize width %g high %g", menu->getContentSize().height); //第2步:创建CCMenuItemImage类型的菜单项 CCMenuItem *imageItem = CCMenuItemImage::"CloseNormal.png","CloseSelected.png"); imageItem->menuCallBack)); //第2步:创建CCLabelBMFont类型的菜单项 CCLabelBMFont * bm = CCLabelBMFont::"bmMenu",21); font-family:新宋体; font-size:9.5pt">"fonts/bitmapFontTest.fnt"); CCMenuItem *labelItem = CCMenuItemLabel::create(bm); labelItem->menuCallBack)); //第2步:创建CCSprite类型的菜单项 CCSprite *nor = CCSprite::"btn_go_1.png"); CCSprite *sel = "btn_go_0.png"); CCMenuItem * sprItem = CCMenuItemSprite::create(nor,sel); sprItem->menuCallBack)); //第2步:创建CCMenuItemToggle类型的菜单项 CCMenuItem * t1 = "ON"); CCMenuItem * t2 = "OFF"); CCMenuItem * t3 = "10%"); CCMenuItem * t4 = "%50%"); CCMenuItem * toggle = CCMenuItemToggle::createWithTarget(this, menuCallBack), t1,t2,t3,t4,138); font-family:新宋体; font-size:9.5pt">NULL); //第3步:将菜单项添加到菜单中去 menu->addChild(fontItem); menu->addChild(fontItem2); menu->addChild(imageItem); menu->addChild(labelItem); menu->addChild(sprItem); menu->addChild(toggle); this->addChild(menu); //第4步:设置菜单项的显示方式,让菜单项垂直显示 menu->alignItemsVertically(); //CCMenu类有一个getChildren()方法可以得到菜单项 CCArray * array = menu->getChildren(); CCObject * obj; int i = 0; CCARRAY_FOREACH(array,obj) { CCMenuItem *item = (CCMenuItem *)obj; item->setTag(i + 100); i++; } /* for (int i = 0; i < array->count();++i) { CCMenuItem *item = (CCMenuItem *)array->objectAtIndex(i); item->setTag(i); } */ return true; } //回调函数 void CCObject * obj) { CCMenuItem * item = (CCMenuItem *)obj; switch (item->getTag() - 1000) { case FONT1: "font menu call "); break; case FONT2: break; case IMAGE: break; case LABELLABEL: break; case TOGGLE: int idx = ((CCMenuItemToggle *)item)->getSelectedIndex(); "index = %d",idx); break; } } |