我想将字体或静态图像放置到画布上,但不确定使用Matter.js的最佳方法是什么。现在,对于图像,我只是创建一个大小为'0'的主体,并将图像URL放在render.sprite.texture属性中。看起来很管用,但是有没有一种不同的/更好的方法可以把静态图像放在画布上?
此外,我在创建/绘制任何其他内容之前,使用脚本顶部附近的'afterRender'事件将文本放置到画布上:
_sceneEvents.push(
Events.on(_engine, 'afterRender', function(event) {
var context = _engine.render.context;
context.font = "45px 'Cabin Sketch'";
context.fillText("THROW OBJECT HERE", 150, 80);
});
);
唯一的问题是文本一直画在上面,所以我的可拖动对象一直在文本后面。我只是想让文本留在背景中,就像静态图像一样,但我认为将字体绘制到画布上可能比让用户下载另一个图像更好。有什么帮助吗?
4条答案
按热度按时间v6ylcynt1#
Matter.js中包含的渲染器实际上只用于演示,所以最好的做法是复制示例Render.js,然后在那里实现所有渲染(其中
Render.world
是每次tick调用的入口方法)。将对象名称更改为其他名称,如
CustomRenderer
,然后在Engine.create
选项中传递渲染类:unhi4e5o2#
有点晚了,但文档显示您有正确的方法将精灵添加到渲染器:
https://github.com/liabru/matter-js/blob/master/examples/sprites.js
(No关于问题的文本部分的想法,然而)
pzfprimi3#
这就是你如何在函数中返回文本字符串作为基本图像
zbwhf8kr4#
Matter.js的默认渲染器实际上并不打算以这种方式使用。大多数情况下,您希望使用自定义渲染器(如liabu talked about)或将Matter连接到您的DOM元素(如this post covers)。