使用OPPO小游戏的api从服务器下载字体文件,然后调用qg.loadFont
let handler = Laya.Handler.create(this, (result: _downloadFileSuccessObject) => {
let family = qg.loadFont(result.tempFilePath)
fairygui.UIConfig.defaultFont = family
//this.onFontLoaded(null)
})
qg.downloadFile({
complete(): void {
}, fail(): void {
}, header: undefined,
success(result: _downloadFileSuccessObject): void {
handler.runWith([result])
}, url: Laya.URL.basePath + FONT_URL
})
union.d.ts
中没有loadFont
,需要在declare namespace qg { }
中添加
export let env:any
/**
* 加载ttf字体
* @param path
*/
export function loadFont(path:string):string;
使用qg.loadFont
对于某些ttf文件会存在加载成功,但是使用字体没有效果的问题
从服务器下载字体后,使用TTFLoader加载字体
class OppoFontLoader {
load(completeHandler: Laya.Handler) {
let handler = Laya.Handler.create(this, (result: _downloadFileSuccessObject) => {
console.debug( "_downloadFileSuccessObject", result)
let ttfLoader = new TTFLoader()
ttfLoader.complete = Laya.Handler.create(null, (loader: TTFLoader) => {
completeHandler.runWith(loader.fontName)
})
ttfLoader.load(result.filePath)
})
let url = Laya.URL.basePath + FONT_URL
let tempFilePath = qg.env.USER_DATA_PATH + '/main.ttf'
qg.downloadFile({
url: url,
complete(): void {
console.debug( "downloadFile complete")
},
fail(): void {
console.debug( "downloadFile fail")
},
header: undefined,
success(result: _downloadFileSuccessObject): void {
console.debug( "downloadFile success", result)
handler.runWith(result)
},
filePath: tempFilePath
})
}
}
网友评论