cocos 学习笔记(二)菜单项
《权威指南》第五章中讲述了菜单项这个重要UI,菜单项的子类可以加入CCMenu中形成菜单。其继承关系如下(图来自原书): 这里主要使用精灵菜单项(CCMenuItemSprite)及其子类图片菜单项来体会其作用。 auto item = CCMenuItemSprite::create(spriteNormal,spriteSelect,spriteDisable,this,menu_selector(HelloWorld::menuCallback));
CCMenu*pMenu = CCMenu::create(item,NULL);
pMenu->setPosition(Point::ZERO);
其中spriteNormal,spriteDisable是三个精灵类创建的对象,对应菜单按钮普通、选中、无效三个状态时的图像。 假设现在一个类似我的世界这样的游戏,在造建筑时,需要用到某个模块,则需要点击一个按钮选中对应道具,再返回,一共要三步,显得有些繁琐。如果要简化这个过程,可以使选择菜单漂浮在界面上,并且可以随处拖动。 void HelloWorld::menuCallback(Ref*ref){
if (ishero){
this->removeChild(hero,false);
hero->release();
ishero = false;
}
else{
hero = CCNode::create();
auto p = CCSprite::create("menu_cho.png");
p->setPosition(Point::ZERO);
hero->addChild(p,1);
hero->setPosition(300,300);
this->addChild(hero,3);
ishero = true;
}
}
其中ishero是一个bool型变量,作为控制菜单的显示的开关。上面的代码可以实现菜单的显示与隐藏,但这个菜单还只空有框架背景没有菜单功能。需要在else中添加如下代码将按钮添加进去: auto bt = CCMenuItemImage::create("menu_button.png","menu_button_down.png",NULL,menu_selector(HelloWorld::buttonCallback));
auto m1 = CCMenu::create(bt,NULL);
Point pt = Point::ZERO;
pt.x += 140;
//按钮相对背景菜单的坐标
m1->setPosition(pt);
hero->addChild(m1,2);
这里只添加了一个按钮,效果图如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |