Menu and MenuItems
CCMenu 是CCmenuItems的集合,可以在菜单中使用buttons 或 labels 菜单项,因为CCMenu 包含全部的菜单项,它控制菜单项的位置和对齐方式,菜单项被默认放在CCMenu 中心。
创建带图片的菜单项
CCMenuItem *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback) );
CCMenuItem *pCloseItem = CCMenuItemFont::create(
"Close",
this,
menu_selector(HelloWorld::menuCloseCallback) );
pCloseItem->setFontSize(35);
pCloseItem->setFontName("Helvetica");
菜单项加入到 CCMenu
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
加入到图层中
this->addChild(pMenu, 1);
添加菜单项响应事件
void GameScene::menuCloseCallback(CCObject* pSender)
{
CCDirector::sharedDirector()->end();
exit(0);
}
Text Labels
1)TTF labels( CCLabelTTF )
使用TTF字体名创建标签,也可以使用自定义的TTF文件,需要把.ttf文件加入工程里。
如果加载TTF字体失败,将会使用UIFont类。
opengl 纹理将基于字体大小和字体名自动计算其大小。
CCLabelTTF* ttf1 = CCLabelTTF::create("Hello World", "Helvetica", 12,
CCSizeMake(245, 32), kCCTextAlignmentCenter);
可以使用这个创建纹理
注意:用这个方式,你必须传递你使用的opengl纹理尺寸,如果纹理尺寸不够大,只能绘制部分标签。
CCLabelTTF* CCLabelTTF::create(const char *string, const char *fontName, float fontSize,
const CCSize &dimensions, CCTextAlignment hAlignment,
CCVerticalTextAlignment vAlignment)
更改对齐方式
//left alignment
label->setAnchorPoint(ccp(0,0.5f));
// right alignment
label->setAnchorPoint(ccp(1,0.5f));
// center aligment (default)
label->setAnchorPoint(ccp(0.5f,0.5f));
label->setString("Hello World 2");
label.setColor(ccc3(0,0,0)); // or
label.setColor(ccc4(0,0,0,0)); // setOpacity