码迷,mamicode.com
首页 > 其他好文 > 详细

[cocos2dx UI] CCLabelAtlas 为什么不显示最后一个字

时间:2014-11-12 02:01:17      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   sp   strong   div   on   

CClabelAtlas优点,基本用法等我就不说了,这里说一个和美术配合时的一个坑!就是图片的最后一位怎么也不显示,如下图中的冒号不会显示

bubuko.com,布布扣

查了ASCII码表,这个冒号的值为58,就是在9(57)的后面,位置也没有错啊,但就是显示不出来!~~~

为什么呢?

看其源码,究其原因,发现是美术给的图片少了一个像素造成的,就是这个一个像素啊占用了我一个小时!~

我们来看看具体原因:

美术告诉我字体宽的距离为29。

bubuko.com,布布扣

但是要注意啦:这里有11个字,一个字宽29,图片的width应该是 11 * 29 = 319,但是美术给了一个 318宽的字体图片

在CCLabelAtlas::calculateMaxItems()方法中会自动计算m_uItemsPerRow 的值,由于少了一个像素 318 / 29 = 10.96551...,被取整数部分后 m_uItemsPerRow就为10,少了一位“:”,想必你已经想到原因了,好,接着来证明下你的想法吧!

m_uItemsPerRow = (int)(s.width / m_uItemWidth);

在CCLabelAtlas::updateAtlasValues()方法中,计算col的值

        float row = (float) (a % m_uItemsPerRow);
        float col = (float) (a / m_uItemsPerRow);

这样就得不到“:”的绘制偏移量像素了,也就是问题的所在了……

程序员们,要小心美术给的效果字体的图片像素了!~~

 

[cocos2dx UI] CCLabelAtlas 为什么不显示最后一个字

标签:style   blog   http   color   os   sp   strong   div   on   

原文地址:http://www.cnblogs.com/StanBlogs/p/4090980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!