123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /**
- * 字体配置JSON
- */
- export interface TmpFontJson {
- size: number;
- bold: number;
- italic: number;
- padding: [number, number, number, number];
- spacing: [number, number];
- outline: number;
- lineHeight: number;
- base: number;
- scaleW: number;
- scaleH: number;
- pages: number;
- packed: number;
- alphaChnl: number;
- redChnl: number;
- greenChnl: number;
- blueChnl: number;
- pageData: Array<{ id: number, file: string }>;
- charData: Array<any>;
- }
- /**
- * BitmapFont字符数据
- */
- export class TmpFontLetter {
- public u: number = 0;
- public v: number = 0;
- public w: number = 0;
- public h: number = 0;
- public offsetX: number = 0;
- public offsetY: number = 0;
- public textureId: number = 0;
- public valid: boolean = false;
- public xAdvance: number = 0;
- }
- /**
- * BitmapFont配置管理类
- */
- export default class TmpFontConfig {
- private _letterDefinitions: { [id: number]: TmpFontLetter } = {};
- private _textures: { [id: number]: cc.Texture2D } = {};
- private _json: TmpFontJson = null;
- public get json(): TmpFontJson { return this._json; }
- public constructor(json: any, textures: cc.Texture2D[]) {
- this._json = json;
- textures.forEach((v, id) => {
- this._textures[id] = v;
- });
- json.charData.forEach((v) => {
- let letter = new TmpFontLetter();
- letter.offsetX = v.xoffset;
- letter.offsetY = v.yoffset;
- letter.w = v.width;
- letter.h = v.height;
- letter.u = v.x;
- letter.v = v.y;
- letter.textureId = v.page;
- letter.valid = true;
- letter.xAdvance = v.xadvance;
- this.addLetterDefinitions(v.id, letter);
- });
- }
- public addTexture(id: number, texture: cc.Texture2D): void {
- this._textures[id] = texture;
- }
- public addLetterDefinitions(letter: number, letterDefinition: TmpFontLetter): void {
- this._letterDefinitions[letter] = letterDefinition;
- }
- public cloneLetterDefinition(): { [id: number]: TmpFontLetter } {
- let copyLetterDefinitions = {};
- for (let key in this._letterDefinitions) {
- let value = new TmpFontLetter();
- cc.js.mixin(value, this._letterDefinitions[key]);
- copyLetterDefinitions[key] = value;
- }
- return copyLetterDefinitions;
- }
- public getTexture(id: number): cc.Texture2D {
- return this._textures[id];
- }
- public getLetter(key: string): TmpFontLetter {
- return this._letterDefinitions[key];
- }
- public getLetterDefinitionForChar(char: string): TmpFontLetter {
- let key = char.charCodeAt(0);
- let hasKey = this._letterDefinitions.hasOwnProperty(key);
- let letter;
- if (hasKey) {
- letter = this._letterDefinitions[key];
- } else {
- letter = null;
- }
- return letter;
- }
- public clear(): void {
- this._letterDefinitions = {};
- }
- }
|