首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在画布中预加载字体的preloadjs

用于在画布中预加载字体的preloadjs
EN

Stack Overflow用户
提问于 2018-08-03 01:45:29
回答 1查看 545关注 0票数 0

我使用preloadjs在画布区域中加载字体(字体在我的计算机上是本地的),但只有在页面刷新后才会显示字体。文本为数字格式,字体为以下代码中的“my_text -7.ttf”:

代码语言:javascript
复制
var stage = new createjs.Stage("canvas");

var queue=new createjs.LoadQueue();
var counter=0;

queue.on("complete",handleComplete);
queue.on("fileload", handleFileLoad);
queue.loadManifest([
        {id:"f1",src:"css/digital-7.ttf"}
                ]);

function handleFileLoad(event){
   counter+=1
   console.log("asset "+ counter+" loaded");
}
function handleComplete(event){
    console.log(counter);

    var my_text=new createjs.Text("hi there!","20px digital-7","black");
    my_text.x=465;
    my_text.y=100;
    stage.addChild(my_text);
    stage.update();
}

//stage.update();

这当然非常令人恼火。为什么只在页面刷新后才显示字体?有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 22:47:59

有两个问题,都不是你的错:

首先,PreloadJS没有将你的文件解释为“字体”。通常,文件扩展名应该足以确定预加载类型,但它看起来只是试图将其加载为纯文本。你可以通过type属性来解决这个问题:

代码语言:javascript
复制
queue.loadManifest([
    {id:"f1", src:"digital-7.ttf", type:"font"}
]);

请注意,由于源只能确定基于单个url的字体,因此在PreloadJS中解决此问题只能捕获这一种用法。

其次,CSS中的“字体系列”是在FontLoader中从字体名称派生而来的。不幸的是,你的字体中有一个破折号,它被去掉了。"Digital-7“变成了"digital7”。如果你使用"digital7",它会正常工作。

代码语言:javascript
复制
var my_text=new createjs.Text("hi there!", "50px 'digital7'", "black"); 

这没有很好的文档,所以我会确保它得到更新。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51659441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档