ビットマップフォント(数字のみの)をShoeBoxで作成し、cocos2dで表示してみました。
※ ビットマップフォントの作り方は、「etc:ShoeBoxでビットマップフォントを作る」を御覧ください。
ShoeBoxで作成したビットマップフォント(font.pngとfong.fntファイル)は、プロジェクトに追加しておきます。
あとは、CCLabelBMPFontのオブジェクトを作成する時に、初期の文字列とともにフォントファイルを指定するだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
-(id) init { if( (self=[super init]) ) { count = 0; counter = [CCLabelBMFont labelWithString:[NSString stringWithFormat:@"%04d", count]fntFile:@"font.fnt"]; CGSize size = [[CCDirector sharedDirector] winSize]; counter.position = ccp( size.width /2 , size.height/2 ); counter.scale = 10; [[counter texture] setAliasTexParameters]; [self addChild: counter]; [self schedule:@selector(nextFrame:)]; } return self; } -(void)nextFrame:(ccTime)dt { count++; if (count > 9999) count = 0; [counter setString:[NSString stringWithFormat:@"%04d", count]]; } |
7行目:ビットマップフォント(font.fnt)でラベルを作成しています。
12行目:サイズを変更しています。
13行目:アンチエイリアスの設定をしています。
-(void)setAliasTexParameters
ハードなエッジになる
-(void)setAntiAliasTexParameters
ソフトなエッジになる
27行目:新たな文字列を設定しています。
※ 全ソースファイルは、こちら:useBitmapFont
フォントをスケールする際にはanchorPointに注意が必要かも。
iOSシミュレータ、非Retinaの環境で
anchorPointが初期値(0.5, 0.5)の状態でscaleに奇数(5)を設定すると、
期待したサイズよりも若干小さく表示され、所々ドットも欠けていた。
小数点以下の誤差が影響している?フォントの作り方の影響?
anchorPointを(0, 0)に設定し、スケールを変更したら問題なく表示された。