(本文写作基于千锋3g学院提供的第三季讲授视频编写,更多资料和资源下载地址请看笔记扉页:传送门)
周日偷了一下懒,“我又回来啦!”
根据第三视频第三讲,里面用到了一些关于位置标签的知识,欧阳老师的讲解已经非常的到位了我在这里骚骚作一下补充:
(一)锚点
其实也没有老师说的那么难理解,锚点嘛,什么有锚?船,船的锚丢下之后,所有的动作都跑不出这个锚点了。我们知道一个精灵就是一张图片,而图片是一个矩形点阵,进行各种动作是需要有一个基准的。
譬如,我们要指定这个精灵在屏幕上的位置position,我们给一个坐标cpp(240, 160),如果没有锚点,这精灵就囧了,究竟是让我的头在这个点上还是让我的脚在这个点上?
而锚点就帮我们解决了这个问题,通过我们的设置,要它的肚脐眼作为锚点,那么每次给这个精灵的position一个坐标,它都会知道,它的肚脐眼应该在这个坐标上了。
同样在缩放(Scale)的功能上也有相同的效用,锚点用于指定基于这个点进行缩放,理解上面的位置特点之后,这个是比较好理解的。
这里有一个关键是:缺省值为cpp(0.5 ,0.5),缺省值的意思就是默认值,多数情况下是不用特意设定的。
(二)CCLabelBMFont
在敲这个类的时候,细心的你会发现CCLabel有三种,分别是CCLabelTTF, CCLabelBMFont 和 CCLabelAtlas。一下引用一片文章来介绍一下这三种字体的区别:
原文:http://blog.sina.com.cn/s/blog_9e82217d01014l4z.html
CCLabelTTF
OK, 看下它的使用方法
CCLabelTTF *label = CCLabelTTF::labelWithString("the string", "Marker Felt", 21);
CCLabelBMFont
CCLabelIBMFont *label = CCLabelIBMFont::labelWithString("the string", "konqa32-hd.fnt");
this->addChild(label);
label->setPosition(ccp(100, 100));
label->setString("change string");
下面是 konqa32-hd.png文件的截图
CCLabelAtlas
CCLabelAtlas *label = CCLabelAtlas::labelWithString("12", "fps_images.png", 12, 18, ".");
this->addChild(label);
label->setPosition(ccp(100, 100));
label->setString("34");
因为这篇文章看得见图,也就选这个了。
文章的大意如下:
TTF 使用较少内存,但每次改动文本都需要重载一次纹理。
BMFont 使用更多内存,但每此改动文本的速度很快,而且支持不同图片格式的文字
Atlas 则只用在纯数字标点的文字上。
此处特别说明一下CCLabelAtlas的初始化方法labelWithString,原文对方法的说明不太详尽,也有些模糊,经过本人亲测,遇到各种奇葩的结果:
以“fps_images.png”图像作为测试格式
首先,第一第二个参数大家都明白,分别是显示的字符串以及使用的格式名称,这个不用多解释;
第二,宽高,这貌似需要设置一个固定值,而且任何情况下都不能改变,一旦改变,就会遇到让人瞪目的结果,我设置的是16, 24,其他设置均有奇葩症状。
第三,这个起始字符只有在输入 ’.‘ 这个值时,你的字符串才会显示正常。我稍微查过一下相关的文章,貌似是与ascii有关的。然后我手贱换了一种文字格式,显示出来的文字我就凌乱了。
总之,这个慢慢再研究。我们用得比较多的还是TTF和BMFont这两种,希望有大神看见能赐教赐教。