前回の記事フォントに絵文字を入れ込むの続きです。
<続きクエー
#複数の文字として1つの画像をまとめてフォントに登録する
自分の作ったUtilクラスに、サブタイトルのような機能を持たせませした。先に結果とコードを載せます。
// トウフビットマップ文字の作成
var tofuChar:BitmapChar =
BitmapFontUtil.createBitmapCharByTexture(
0 , // charcodeはなんでもいい
_assetManager.getTexture("tofu"), 0, 4, 12);
// tofuCharを範囲指定で登録
BitmapFontUtil.fillBitmapChars(
tofuChar,
eijiFont, // 対象フォント
CharCodeUtil.getIdListByCodeRange(0x3000, 0x30ff), //ひらがなとカタカナの範囲
true, // 上書きしない設定
true // BitmapCharを使いまわす設定
);
// 画面に表示(_doHelperはデモ用に画面表示を楽に行うためのインスタンス)
_doHelper.locateDobj(
_doHelper.createSpriteText(
"ABCあいうえあ〜ワヲンDEF", eijiFont.name, 200),
50, 40);
BitmapFontUtil.fillBitmapCharsという部分がキモの命令です。フルコードはこちらに(前回の記事のデモも含む。)
https://github.com/harayoki/-qiita1/blob/replaceBitmapCharByTexture/src/StarlingMain.as
トウフ画像とパック済みフォント画像は1つのアトラス画像にパックされています。(前回の記事参照)カナフォント画像やカラーバー画像もアトラス画像に含まれていますが、今回のデモでは使われていません。
#注意
fillBitmapCharsの第五引数、"BitmapCharを使いまわす設定"というのだけ、注意が必要です。BitmapCharインスタンスをフォントに登録する際、本来は1文字1文字別のBitmapCharインスタンスを使わなくてはいけない(BitmapCharは登録されるidのプロパティをもっている)のですが、今回のような目的では無駄にメモリを浪費してしまうので、デフォルトでは1つのインスタンスでまかなう処理になっています。今の所誤動作はしていませんが、利用される方がおり、何か問題が出た場合はここをfalse指定にしてください。
#まとめ
今回の記事のやりかたで、Starlingのテキストフィールドが、未定義文字があってもエラーtraceを書き出すだけでそのまま文字を表示しないでスルーしてしまうのを、目視でトウフ確認できる状態に変更できるので、そのような際に役に立つかもしれません。。まあ、そもそもTextField側のコードを直したい感じではありますね。