[cocos2dx UI] CCLabelAtlas 爲何不顯示最後一個字

CClabelAtlas優勢,基本用法等我就不說了,這裏說一個和美術配合時的一個坑!就是圖片的最後一位怎麼也不顯示,以下圖中的冒號不會顯示程序員

查了ASCII碼錶,這個冒號的值爲58,就是在9(57)的後面,位置也沒有錯啊,但就是顯示不出來!~~~字體

爲何呢?spa

看其源碼,究其緣由,發現是美術給的圖片少了一個像素形成的,就是這個一個像素啊佔用了我一個小時!~code

咱們來看看具體緣由:blog

美術告訴我字體寬的距離爲29。圖片

可是要注意啦:這裏有11個字,一個字寬29,圖片的width應該是 11 * 29 = 319,可是美術給了一個 318寬的字體圖片源碼

在CCLabelAtlas::calculateMaxItems()方法中會自動計算m_uItemsPerRow 的值,因爲少了一個像素 318 / 29 = 10.96551...,被取整數部分後 m_uItemsPerRow就爲10,少了一位「:」,想必你已經想到緣由了,好,接着來證實下你的想法吧!class

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

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

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

這樣就得不到「:」的繪製偏移量像素了,也就是問題的所在了……float

程序員們,要當心美術給的效果字體的圖片像素了!~~

相關文章
相關標籤/搜索