CALabel 类
作用:
标签文字类,用于显示文本
版本1.19
基类
CAVIEW
protected fontName label的字体
protected fontSize label的字体大小
protected Color label的字体颜色
protected VerticalTextAlignmet 文本的竖直对齐方式
protected TextAlignment 文本的水平对齐方式
protected NumberOfLine label的行数
protected LabelSize label当前的size
一.标签类的创建,目前只支持使用 createWitchFrame(...),createWitchCenter(...) 来创建CALabel类对象
void FirstViewController::viewDidLoad()
{
//创建
CALabel* calable1 = CALabel::createWithFrame(CCRect(100, 100, 200, 400)); //不能使用create方法来创建CALabel对象
calable1->setText("HelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorld");
//字体显示的大小
calable1->setFontSize(40);
//为了不同屏幕的适配,设置大小的时候,可以使用px,绝对像素
calable1->setFontSize(_px(50)); //效果就是在ipad 上和iphone 等设备上字体的大小都是一样的
//颜色
calable1->setColor(CAColor_blue);
//自定义字体类型
calable1->setFontName("fonts/Marker Felt.ttf");
//设置对齐,是以 frame 里面设置的 方形大小来对齐的标准的。
calable1->setTextAlignment(CATextAlignmentCenter); //alignment 对齐方式
calable1->setVerticalTextAlignmet(CAVerticalTextAlignmentTop); //vertical 垂直
//设置文本行数
calable1->setNumberOfLine(4);
//win32下中文字符显示的方法
CALabel* calable2 = CALabel::createWithFrame(CCRect(100, 400, 200, 40));
calable2->setText(UTF8("你好!")); //win32 下显示中文,会出现乱码或者不显示,可能有2个问题:1.字体类型中没有中文字符。2.win32下需要转码
getView()->addSubview(calable2);
getView()->addSubview(calable1);//事件驱动渲染模式,只有这行代码执行的时候,才会调用渲染程序
}
注意:
1.以上的红色属性,CALabel 的对其方式水平和竖直分开设置。使用 createWithFrame()创建的CALable对象,使用这两个属性,对齐标准是创建的CCRect。使用createWithCenter() 创建的对象,对象的中心坐标为设置的X,Y的坐标。
如果 想改变CALable 的位置坐标,可以使用 calable1->setFrameOrigin(CCPoint(0,100));来实现。(坐标是相对于父CAView来设置的坐标)2.CALabel 创建方法继承CAView 类,2中实例化对象的方式:
createWithFrame(),createWithCenter(),CAView 拥有父类CAView的 create和createWithColor()方法,但是,不能用来创建CALabel类对象,即:不能实例化CALabel类对象。
使用createWithCenter()来创建 label 之后,使用setCenter()来设置会产生不是我们要的坐标,因为没有水平对齐的问题,需要和setTextAlignment(CATextAlignmentCenter);一起使用。
如果先使用createWithCenter()来创建 label 之后,使用setFrameOrigin()来设置会产生不是我们要的坐标,应该是bug。
建议:使用createWithFrame 来创建 ,然后用setFrameOrigin确定屏幕的位置。
或者使用createWithCenter()定位,(可以结合setVerticalTextAlignmet()和setTextAlignment()使用)。
CrossApp 使用的是 屏幕坐标系,即:左上角为(0,0),向下为Y正,向右为X正:
CAView 对象中增加子CAView对象的时候,坐标系统会以父CAView为新的坐标系统,即:以父CAView的左上角为(0,0)坐标。
3.Label的行数: 其实Label行数是受Label的范围的影响,假如你设置的Frame太小,你超出Frame范围的行数是不被显示的。 例如:Frame的范围只够显示2行,那么NumberOfLine设置比2大也是最多显示2行。 4.win开放中文字符: 假如是是在win下开发CrossApp那么,label->setText("中文");这样直接设置中文字符,CALabel的显示不正常的。 我们可以设置转为UTF8格式,格式如下:label->setText(UTF8("你好,CALable"));