美文网首页
OPPO小游戏使用TTF字体

OPPO小游戏使用TTF字体

作者: zz_d3ec | 来源:发表于2021-01-06 10:35 被阅读0次

使用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
        })
    }
}

相关文章

网友评论

      本文标题:OPPO小游戏使用TTF字体

      本文链接:https://www.haomeiwen.com/subject/lyuioktx.html