CALabel 类
作用:
标签文字类,用于显示文本
版本1.19
基类
CAVIEW
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"));