[cocos2d] 显示状态与文字
前言:
对于显示数值与文字一般有三种方式可以使用:
CCLabelTTF 、CCLabelBMFont 、CCLabelAtlas
详细区别可参考:cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
而对于不断变化的数值与文字,由于CCLabelTTF的执行效率较低,一般使用后两者。
如果只是要显示变化数值,例如游戏得分,角色生命值变化等等,CCLabelBMFont就显得大材小用了,因为CCLabelAtlas足够应付了。
方法:对于字体要求不大而且只需显示数值的
由于cocos2d已经自带了字体文件,对于字体要求不高的话可以直接使用其字体。旧版的cocos2D用fps_images.png,但是新版不再包含此文件,转而是用一个类文件ccFPSImages.m以16进制的形式储存在unsigned char cc_fps_images_png[]中。
打开文件可以看到
1 unsigned char cc_fps_images_png[] = { 2 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 3 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 4 0x08, 0x06, 0x00, 0x00, 0x00, 0xfd, 0xa9, 0xa6, 0xe4, 0x00, 0x00, 0x0a,。。。。。。 5 //此处仅节选部分内容 6 7 }
PNG文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
由于fps状态显示是游戏开始时便初始化,所以textureCache中已经有该贴图的缓存,所以直接调用缓存即可。
CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"cc_fps_images"]; CCLabelAtlas *label = [[CCLabelAtlas alloc] initWithString:@"0" texture:texture itemWidth:12 itemHeight:32 startCharMap:'.']; label.position = ..... .. [self addChild:label...];