Label控件
Label:x引擎中用于显示文字信息的控件。Label控件是一组功能相同控件的统称,x引擎在实现Label控件时,选择采用了多种技术实现方式,这些方式的实现细节有很大区别,而且每种技术方式的作用也都不同。
CCLabelAtlas:这是一种根据字符ASCII编码顺序进行索引定位的标签控件,需要有一张图片存放所有将要用到的字体,并且这些字体必须是按照ASCII编码顺序排列的,每个字体在图片中的宽度,高度以及间距都必须相同。
举个例子:图片中的起始字符是0,图片容纳了一共10个字符,后续的字符就必须是按照ASCII编码排序的0后面的9个字符,即123456789。有了这张图片作为资源,CCLabelAtlas类型的控件可以支持0~9全部数字的显示功能。当控件要显示6这个字符时,它能够根据起始字符0计算出6在ASCII编码中排在0的第几位,然后根据字符的宽度高度定位出6对应字体图片的精确位置。
使用:
CCLabelAtlas* label1 = CCLabelAtlas::create("4.85 Test","fonts/tuffy_bold_italic-charmap.png",48,64,' ');
效果:
CCLabelTTF:使用系统字体生成图像绘制到屏幕上,其优点是可以指定任意类型的系统内置字体,不需要额外的字体文件,在指定字体不可用时将使用系统默认字体代替。缺点是字体是时事生成的,所以对于实时变化的字符来说需要占用更多的系统开销。在生成这种标签控件时,还可以通过参数指定字体的大小,指定整个显示范围和对其方式,这种Label控件比较适合多行文字的显示。
使用:
CCLabelTTF* ttf0 = CCLabelTTF::create("Alignment 0\nnew line","Helvetica",12,CCSizeMake(256,32),kCCTextAlignmentLeft);
效果:
CCLabelBMFont:x引擎中效果最理想,效率最高的一种方案就是BitmapFont,这是一种预生成的字体,使用时配置文件定位找到字体使用的图片区域,不会因为系统实时生成字体而使得游戏效率下降,x引擎内置了对BitmapFont的支持,CCLabelBMFont就是对BitmapFont支持的字体标签控件。BitmapFont字体的资源文件由一个*.fnt和对应的*.png文件组成,其中*.fnt文件里是字体的配置信息,而被预先生成好的字体图片都放在*.png图片上。
例:
使用:
CCLabelBMFont* label2 = CCLabelBMFont::create("00.0","fonts/bitmapFontTest.fnt");
label2->setString("中国");
使用:
ccLanguageType currentLanguageType = CCApplication::sharedApplication()->getCurrentLanguage(); switch(currentLanguageType){ case kLanguageEnglish: labelLanguage->setString("current language is English"); break; case kLanguageChinese: labelLanguage->setString("current language is Chinese"); break; }效果: