cocos2d-x 3.3rc0 实现Win8菜单效果
来源:互联网 发布:mac桌面下方白条 编辑:程序博客网 时间:2024/05/23 19:14
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;}
0 0
- cocos2d-x 3.3rc0 实现Win8菜单效果
- cocos2d-x-3.3rc0退出抖动问题
- cocos2d-x-3.3rc0事件处理
- cocos2d-x 3.0rc0 win7
- cocos2D中实现滑动菜单CCScrollView+CCMenu效果,(注意不是cocos2D-x)!!
- cocos2d-x-3.0rc0 项目创建
- Cocos2d-x-3.0rc0创建新项目
- cocos2d-x-3.0rc0 创建项目
- cocos2d-x 3.0 rc0 + flappybird 学习心得
- cocos2d-2.1rc0-x-2.1.3
- cocos2d-x 3.2 rc0 编译错误解决
- 【Cocos2d-x】实现翻牌效果
- cocos2d-x实现亮片效果
- cocos2d-x实现打字机效果
- 使用Cocos Code IDE运行lua-test(本人使用的是cocos2d-x 3.3rc0)
- Cocos Studio 2.0Beta0创建的cocos2d-x-3.3rc0项目解析方法
- cocos2d-x 实现图片加文字菜单
- Cocos2d-X中实现菜单特效
- Java字节码优化分析框架Soot初探(一)
- To Hadoop or Not to Hadoop?
- MFC对话框设置焦点
- java.uitil.Locale类
- C# 引用 表值函数 远程表值函数不可用
- cocos2d-x 3.3rc0 实现Win8菜单效果
- C#版三层实例——三大高手各显神通(实战篇2)
- 详解linux下C语言结构体对齐(内存对齐问题)
- Yahoo WEB前端优化34条原则
- coursera android版本中提取下载后的课件视频-非root手机
- 如何装多个tomcat
- UICollectionview控件学习
- Web应用的缓存设计模式
- 关于webqq再次浅谈