cocos2d-x 3.3rc0 实现Win8菜单效果

cocos2d-x 3.3rc0 实现Win8菜单效果,第1张

概述1. 目标     如下图所示: 2. 应用实现代码 // on "init" you need to initialize your instancebool MainMenu::init(){ ////////////////////////////// // 1. super init first if ( !Layer::init() ) { 1. 目标

如下图所示:



2. 应用实现代码
// 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;}


3. 修改引擎代码
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菜单效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1009759.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存