
如下图所示:
// on "init" you need to initialize your instancebool MainMenu::init(){ ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); log("TEST: x=%f,y=%f,w=%f,h=%f\n",origin.x,origin.y,visibleSize.wIDth,visibleSize.height); //////////////////////////////////// // add "MainMenu" backgroud auto sprite = Sprite::create("menubg.png"); // position the sprite on the center of the screen sprite->setposition(Vec2(visibleSize.wIDth/2 + origin.x,visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite,0); //////////////////////////////////// // add 6 menuitem for main menu int itemWIDth,startPos,space; mainMenuItems[0] = MenuItemImage::create( "MI1normal.png","MI1Selected.png",CC_CALLBACK_1(MainMenu::menuKNowCB,this)); itemWIDth = mainMenuItems[0]->getContentSize().wIDth; space = 10; startPos = (visibleSize.wIDth - itemWIDth*6 - space*5)/2; mainMenuItems[0]->setposition(Vec2(origin.x + startPos + itemWIDth/2,origin.y + visibleSize.height/2)); mainMenuItems[1] = MenuItemImage::create( "MI2normal.png","MI2Selected.png",CC_CALLBACK_1(MainMenu::menuStudyCB,this)); startPos += 10; mainMenuItems[1]->setposition(Vec2(origin.x + startPos + 3*itemWIDth/2,origin.y + visibleSize.height/2)); mainMenuItems[2] = MenuItemImage::create( "MI3normal.png","MI3Selected.png",CC_CALLBACK_1(MainMenu::menuImproveCB,this)); startPos += 10; mainMenuItems[2]->setposition(Vec2(origin.x + startPos + 5*itemWIDth/2,origin.y + visibleSize.height/2)); mainMenuItems[3] = MenuItemImage::create( "MI4normal.png","MI4Selected.png",CC_CALLBACK_1(MainMenu::menuEnjoyCB,this)); startPos += 10; mainMenuItems[3]->setposition(Vec2(origin.x + startPos + 7*itemWIDth/2,origin.y + visibleSize.height/2)); mainMenuItems[4] = MenuItemImage::create( "MI5normal.png","MI5Selected.png",CC_CALLBACK_1(MainMenu::menuSetCB,this)); startPos += 10; mainMenuItems[4]->setposition(Vec2(origin.x + startPos + 9*itemWIDth/2,origin.y + visibleSize.height/2)); mainMenuItems[5] = MenuItemImage::create( "MI6normal.png","MI6Selected.png",CC_CALLBACK_1(MainMenu::menuExitCB,this)); startPos += 10; mainMenuItems[5]->setposition(Vec2(origin.x + startPos + 11*itemWIDth/2,origin.y + visibleSize.height/2)); ///////////////////////////// // 2. add a menu item with "X" image,which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object auto closeItem = MenuItemImage::create( "Closenormal.png","CloseSelected.png",CC_CALLBACK_1(MainMenu::menuCloseCallback,this)); closeItem->setposition(Vec2(origin.x + visibleSize.wIDth - closeItem->getContentSize().wIDth/2,origin.y + closeItem->getContentSize().height/2)); // create menu,it's an autorelease object auto menu = Menu::create(mainMenuItems[0],mainMenuItems[1],mainMenuItems[2],mainMenuItems[3],mainMenuItems[4],mainMenuItems[5],closeItem,nullptr);//NulL); menu->setposition(Vec2::ZERO); this->addChild(menu,1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label auto label = Label::createWithTTF("Hello World","Fonts/Marker Felt.ttf",24); // position the label on the center of the screen label->setposition(Vec2(origin.x + visibleSize.wIDth/2,origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer this->addChild(label,1); //MediaManager::getInstance()->play("/mnt/sdcard/vIDeo/cg720p.mp4"); // every 10s,call MainMenu::playTest //this->schedule(CC_SCHEDulE_SELECTOR(MainMenu::test),2); flag = 0; return true;}
bool MenuItemSprite::initWithnormalSprite(Node* normalSprite,Node* selectedSprite,Node* DisabledSprite,const ccmenuCallback& callback){ MenuItem::initWithCallback(callback); setnormalimage(normalSprite); setSelectedImage(selectedSprite); setDisabledImage(DisabledSprite); // added by MyArrow on 2014-11-12 // to display the selected image on the topest selectedSprite->setGlobalZOrder(normalSprite->getGlobalZOrder()+100.0f); // to enlarge from menu image center,selected image is larger than normal image if (selectedSprite && normalSprite) { selectedSprite->setposition( (normalSprite->getContentSize().wIDth-selectedSprite->getContentSize().wIDth)/2.0f,(normalSprite->getContentSize().height-selectedSprite->getContentSize().height)/2.0f); } // added end if(_normalimage) { this->setContentSize(_normalimage->getContentSize()); } setCascadecolorEnabled(true); setCascadeOpacityEnabled(true); return true;} 总结 以上是内存溢出为你收集整理的cocos2d-x 3.3rc0 实现Win8菜单效果全部内容,希望文章能够帮你解决cocos2d-x 3.3rc0 实现Win8菜单效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)