Cocos2d-x 周边工具 之 BMFont
转载请注明出处:
————————————————————————————————————— 好久没有更新博客,有些懒了,要改啊,(⊙v⊙)嗯…. 这是第一篇,关于字体da~ 正文:我们做游戏的时候,会用到很多文字,有动态的、有静态的, 静态文字的制作,这里就不说了(其实是不会o(╯□╰)o) 虽然这样,但是无法掩盖它强大之处——迅捷、高效、免费! BMFont的基本使用看这个主界面,左上角两个菜单项——选择 与 编辑; 接下来看菜单项——选择 ok,先来看看第一个 Font setting(字体设置) 再看一下第二个 Export Options(导出设置) 然后是第二个菜单项——编辑 大部分东东都注释了一下,还有不懂得,可以度娘or谷哥~ BMFont 汉字的添加我们已经大体会使用BMFont了,现在来加入一些汉字。 做一个 表 的小Demo说了这么多,不如来一个小Demo试试效果。 1.在TXT中输入时间、分、秒;在BMFont中找到 数字、符号、英文。 <dict>
<key>TIME</key>
<string>时间</string>
<key>MIN</key>
<string>分</string>
<key>SEC</key>
<string>秒</string>
</dict>
用Dictionary获取Key值内容: Dictionary *strings = Dictionary::createWithContentsOfFile("fonts/chinese.xml");
//读取键中的值 objectForKey根据key,获取对应的string
const char *tr_time = ((CCString*)strings->objectForKey("TIME"))->getCString();
const char *tr_min = ((CCString*)strings->objectForKey("MIN"))->getCString();
const char *tr_sec = ((CCString*)strings->objectForKey("SEC"))->getCString();
4.在Cocos2d-x中,有专门的标签——LabelBMFont,它的速度比LabelTTF快很多而且LabelBMFont中的每个字符宽度是可变的。 auto timeHZ = LabelBMFont::create(tr_time+StringUtils::format(": %d",min)+tr_min+StringUtils::format("-%d",sec)+tr_sec,"fonts/fontDemo.fnt");
timeHZ->setTag(11);
timeHZ->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));
this->addChild(timeHZ);
5.设置更新函数,一秒更新一次,60秒进1分等细节: void BMFontDemo::clockRun(float ft)
{
if( sec >= 59 ) {
if( min >= 59 ) {
min = 0;
}
else
{
min++;
}
sec = 0;
}
else
{
sec++;
}
//利用CCDictionary来读取xml
Dictionary *strings = Dictionary::createWithContentsOfFile("fonts/chinese.xml");
//读取键中的值 objectForKey根据key,获取对应的string
const char *tr_time = ((CCString*)strings->objectForKey("TIME"))->getCString();
const char *tr_min = ((CCString*)strings->objectForKey("MIN"))->getCString();
const char *tr_sec = ((CCString*)strings->objectForKey("SEC"))->getCString();
auto label = (LabelBMFont*)this->getChildByTag(11);
label->setString( tr_time + StringUtils::format(": %d",min) + tr_min + StringUtils::format("-%d",sec) + tr_sec );
}
6.运行一下,小钟表就显示出来了 我对BMFont的小小理解我觉得这个BMFont就是,把你系统字库或者自己下载字库中的一些文字,重新打包成一个 fnt 和 png,然后用的时候,从fnt中获取坐标,直接截取png相应位置,显示出来。 OK,这篇文章就到这里了,下一篇是关于 TexturePacker 的。 最后~ 转载请注明出处:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |