cocos2dx-x核心概念(二)————字符串,标签和菜单
一,cocos2d-x中的字符串
在cocos2d-x中可用的字符串有三种:const char * 和 std::string 和 cocos2d::_String,其中,const char * 是C语言风格的字符串,std::string是C++风格的字符串,它封装了const char * ,cocos2d::_String才是Cocos2d-x提供的字符串类。
(一)使用const char * 和 std::string
std::string 是一个类,具有面对对象的有点,不需要使用指针,不需要关心内存释放问题,在作用域超出之后,std::string 对象被释放。而const char * 没有这些特性。
std::string name = "oscar";
std::string name = std::string("oscar");
const char * cstring = name.c_str()
std::string * name = new std::string("oscar");
...
delete name;
const char * cstring = name->c_str();
cocos2d::_String 基于Unicode双字节编码,创建它的静态函数create如下
(1)static _String * create(const std::string & str);
(2)static _String * createWithFormat(const char * format,...);
代码实例如下:
_String* name = _String::create("Hi,Oscar");
int num = 123;
_String * ns = _String:: createWithFormat("%d",num);
_String * name = _String::create("Hi,Ocar");
const char * cstring = name->getCString();
const char* 转换为 cocos2d::_String
const char * cstring = "Hi,Oscar";
_String * ns = _String::createWithFormat("%s",cstring);
std::string 转换为 cocos2d::_String
std::string string = "Hi,oscar";
_String *ns = _String::createWithFormat("%s",string.c_str());
cocos2d::_String 转换为 int 类型
int num =123;
_String *ns = _String::createWithFormat("%d",num);
int num2 = ns->intValue();
cocos2dx中的标签类有四种:LabelTTF,LabelAtlas和LabelBMFont,Label。
(一)LabelTTF使用系统类字体,最简单的标签:
auto label = LabelTTF::create("Hello World","Arial",64);
(二)LabelAtlas是图片集标签,文字是从一个图片集中取出的,需要加载图片集文件,比LabelTTF快很多:
auto label = LabelAtlas::create("Hello World","fonts/fonts.png",48,66,' ');
(三)LabelBMFont是位图字体标签,需要添加字体文件,包括一个图片集(.png)和一个字符坐标文件(.fnt),每个字符的宽度都是可变的。
auto label = LabelBMFont::create("Hello World","fonts/BMFont.fnt");
(四)Label
cocos2d-x 3.x推出了新的标签类Label,它使用FreeType,渲染速度更快,提供了描边和阴影等特性。
(1)创建系统字体标签对象
static Label* createWithSystemFont | ( | const std::string & | text, |
const std::string & | font, | ||
float | fontSize, | ||
const Size & | dimensions = Size::ZERO , | ||
TextHAlignment | hAlignment = TextHAlignment::LEFT , | ||
TextVAlignment | vAlignment = TextVAlignment::TOP | ||
) |
text | 最始文本内容。 |
font | 一个字体文件或字体名称。 |
fontSize | 字体大小。这个值必须大于0。 |
dimensions | 文本的内容大小。 |
hAlignment | 水平对齐方式。 |
vAlignment | 垂直对齐方式。 |
实例:auto Label1 = Label::createWithSystemFont("Hello World1","Arial",36);
(2)创建TTF字体标签对象
static Label* createWithTTF | ( | const TTFConfig & | ttfConfig, |
const std::string & | text, | ||
TextHAlignment | hAlignment = TextHAlignment::LEFT , | ||
int | maxLineWidth = 0 | ||
| ) |
ttfConfig | 一个TTFConfig对象实例。 |
text | 最初文本内容。 |
hAlignment | 水平对齐方式 |
maxLineWidth | 最大线宽 |
实例:auto Label2 = Label::createWithTTF("Hello World2","fonts/fonts.ttf",36);
(3)创建位图字体标签对象
|
| static |
基于给定的字符串,字体配置及回调创建菜单项。
-
参数
-
text 要显示的文本。 callback 菜单项被激活时调用的回调。
-
返回
- 一个初始化的MenuItemFont菜单项,该节点会自动被标记为“autorelease”(自动释放).
| static |
使用给定的字符串、字符集配置及回调创建菜单项。
-
参数
-
text 要显示的文本。 charMapFilePath 字符集字体的文件路径。 itemWidth 字符的宽度。 itemHeight 字符的高度。 startingCharacter 起始字符。 callback 菜单项被激活时调用的回调。
-
返回
- 一个初始化的文本菜单项,该节点会自动被标记为“autorelease”(自动释放).
| static |
基于给定的不同状态下显示的节点及回调创建菜单项。
-
参数
-
normalNode 正常状态显示的节点。 selectedNode 选中状态显示的节点。 disabledNode 禁用状态显示的节点。 callback 菜单项被激活时调用的回调。
-
返回
- 一个初始化的MenuItemSprite菜单项,该节点会自动被标记为“autorelease”(自动释放).
| static |
基于给定的不同状态下的图片资源及回调创建菜单项。
-
参数
-
normalImage 正常状态显示的图片路径。 selectedImage 选中状态显示的图片路径。 disabledImage 禁用状态显示的图片路径。 callback 菜单项被激活时调用的回调。
-
返回
- 一个初始化的图片菜单项,该节点会自动被标记为“autorelease”(自动释放).
| static |
基于给定的回调及菜单项数组创建菜单项触发器。
-
参数
-
callback 菜单项被激活时调用的回调。 menuItems 菜单项数组。
-
返回
- 一个初始化的触发器菜单项,该节点会自动被标记为“autorelease”(自动释放).