Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matter.js:在画布上放置文本或图像

Matter.js:在画布上放置文本或图像
EN

Stack Overflow用户
提问于 2014-09-25 08:16:06
回答 3查看 10.6K关注 0票数 6

我希望将字体或静态图像放到画布上,但不确定使用Matter.js的最佳方法是什么。现在,对于图像,我只是创建一个大小为“0”的主体,并将图像url放在render.sprite.texture属性中。看起来很管用,但是在画布上放置静态图像有什么不同/更好的方法吗?

此外,在创建/绘制其他内容之前,我使用脚本顶部附近的“afterRender”事件将文本放到画布上:

代码语言:javascript
运行
AI代码解释
复制
_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);
    });
);

唯一的问题是文本总是被画在顶部,所以我的拖放对象一直在文本后面。我只想让文本保持在背景中,就像静态图像一样,但我认为将字体绘制到画布上可能比让用户下载另一张图像更好。有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-12 12:13:22

Matter.js中包含的呈现器实际上只是为了演示,所以最好的方法是复制一个示例Render.js,然后在那里实现所有的呈现(其中Render.world是每个滴答上调用的条目方法)。

将对象名称更改为类似于CustomRenderer的其他内容,然后在Engine.create选项中传递您的呈现类:

代码语言:javascript
运行
AI代码解释
复制
var engine = Engine.create({
    render: {
        element: element,
        controller: CustomRenderer
    }
});
票数 5
EN

Stack Overflow用户

发布于 2016-02-10 22:24:33

有点晚了,但是这方面的文档显示,在将sprite添加到呈现器中时,使用了正确的方法:

代码语言:javascript
运行
AI代码解释
复制
    let head = Bodies.circle(450, 50, 17, {
                render: {
                    sprite: {
                        texture: './img/head.png'
                    }
                }}
            );

https://github.com/liabru/matter-js/blob/master/examples/sprites.js

(目前还不知道问题的正文部分)

票数 4
EN

Stack Overflow用户

发布于 2018-11-01 12:38:37

这是如何将函数中的文本字符串作为基本图像返回的方法。

代码语言:javascript
运行
AI代码解释
复制
createImage($string) {

    let drawing = document.createElement("canvas");

    drawing.width = '150'
    drawing.height = '150'

    let ctx = drawing.getContext("2d");

    ctx.fillStyle = "blue";
    //ctx.fillRect(0, 0, 150, 150);
    ctx.beginPath();
    ctx.arc(75, 75, 20, 0, Math.PI * 2, true);
    ctx.closePath();
    ctx.fill();
    ctx.fillStyle = "#fff";
    ctx.font = "20pt sans-serif";
    ctx.textAlign = "center";
    ctx.fillText($string, 75, 85);
    // ctx.strokeText("Canvas Rocks!", 5, 130);

    return drawing.toDataURL("image/png");
},

// and then e.g. in your sprites

// ...

render: {
  sprite: {
      texture: createImage("Your Text String")
      xScale: 1,
      yScale: 1
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26043360

复制
相关文章
Linux控制台重定向方法
一些嵌入式设备,一般都会留有调试串口,经由RS232/485标准与PC的COM口相连,将打印输出在PC上显示,并可以接收PC端的输入,如下图所示:
coderhuo
2020/01/19
4.8K0
如何在 Linux 上锁定虚拟控制台会话 如何在 Linux 上锁定虚拟控制台会话
当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么。如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统。要感谢 Vlock(Virtual Console lock),这是一个命令行程序,用于锁定 Linux 控制台上的一个或多个会话。如有必要,你可以锁定整个控制台并完全禁用虚拟控制台切换功能。Vlock 对于有多个用户访问控制台的共享 Linux 系统特别有用。
用户8639654
2021/10/26
2.3K0
Linux 中的主机、控制台和终端
在unix诞生之初,计算机的价格非常昂贵。当时还没有个人计算机,大多数计算机都是大型、昂贵、不稳定的机器,必须存放在湿度和温度可控的环境中。贝尔实验室的Thompson开始寻找小并且便宜的计算机。那时大多数计算机需要100,000美元,1970年他和同事们得到了一台PDP-11,当时需要10,800美元。在数个月之内,他们将unix移植到了这台计算机内。但是PDP-11一次只能运行一个程序,于是他们修改了unix系统,使unix能够一次运行多个程序,直到1973年这一目标才实现。
mwangblog
2018/07/04
1.7K0
linux系统下codeblocks控制台打印中文乱码[通俗易懂]
1、将Settings ->Editor ->Encoding settings ->Encoding项改为UTF-8,然后确定,如下图所示:
全栈程序员站长
2022/09/14
3.9K0
linux系统下codeblocks控制台打印中文乱码[通俗易懂]
(十一)模仿学习
  从之前的讨论看,都是有奖励的。哪怕是上一章的稀疏奖励,其实也有奖励。==假如任何奖励都没有怎么办?==本章介绍的就是这种情况的解决办法。 什么时候任何奖励都没有。其实还挺常见的,以聊天机器人为例,聊的好不好很难定义奖励。解决这种情况的方法就是模仿学习 模仿学习(imitation learning),有时也叫示范学习或者学徒学习。指有一些专家的示范,通过模仿这些专家来达到目的。专家的示范含义很广,比如在自动驾驶中,一个司机的行为就可以被称为专家的示范。   模仿学习中主要有两个方法:行为克隆和逆强化学习
全栈程序员站长
2022/11/04
4880
(十一)模仿学习
如何模仿教父
FBI网站有组织犯罪的页面专门有介绍Cosa nostra:https://www.fbi.gov/investigate/organized-crime/history-of-la-cosa-nostra。
SeanCheney
2018/10/15
8200
[WPF自定义控件库] 模仿UWP的ProgressRing
虽然我认为这个控件库的控件需要模仿Aero2的外观,但总有例外,其中一个就是ProgressRing。ProgressRing是来自UWP的控件,部分代码参考了 这里。ProgressRing的使用方式运行效果如下:
dino.c
2019/10/23
8840
模仿学习 比较图
ONE-SHOT HIGH-FIDELITY IMITATION: TRAINING LARGE-SCALE DEEP NETS WITH RL
CreateAMind
2018/12/28
5610
模仿学习 比较图
腾讯paper 模仿学习
3. 基于分批历史数据的指数加权模仿学习方法 Exponentially Weighted Imitation Learning for Batched Historical Data 这项研究由腾讯 AI Lab 独立完成,主要研究了仅使用成批量的历史数据的深度策略学习。这篇文章中我们主要考虑的是只使用历史数据的深度策略学习。这个问题的主要挑战在于,与大部分强化学习问题不同,我们不再有一个环境的模拟器来进行学习。为了解决这个问题,研究者提出一个单调优势加权的模仿学习算法来从历史数据中学习,并且可以应用到复杂非线性函数近似以及混合动作空间的问题中。这个方法并不依赖用来生成数据的行为策略的知识,所以可以被用来从一个未知的策略生成的数据中进行学习。在一些条件下,该算法(尽管非常简单)可以证明策略提升的下界,并且在实验中的效果超过了其它方法,并有望为复杂游戏 AI 提供更好的模仿学习。论文中也提供了详尽的数值实验来展示所提出的算法的有效性。
CreateAMind
2019/03/19
5230
Imitation Learning 模仿学习
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Steve Wang
2019/11/20
7500
模仿学习–技术综述[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
2940
模仿学习(Imitation Learning)入门
在游戏中,我们往往有一个计分板准确定义事情的好坏程度。但现实中,定义Reward有可能是非常困难的,并且人定的reward也有可能存在许多意想不到的缺陷。在没有reward的情况下,让AI跟环境互动的一个方法叫做Imitation-Learning。在没有reward的前提下,我们可以找人类进行示范,AI可以凭借这些示范以及跟环境的互动进行学习。这种模仿学习使得智能体自身不必从零学起,不必去尝试探索和收集众多的无用数据,能大大加快训练进程。
全栈程序员站长
2022/09/28
8230
模仿学习(Imitation Learning)入门
MHA架构搭建(模仿淘宝)
   MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
萧晚歌
2020/08/19
1.4K0
深圳华强北的成熟:从模仿到被模仿
深圳华强北电子市场是电子产品极客的天堂,销售的商品琳琅满目,既有芯片,也有架子鼓和悬浮滑板等产品。但在一些人看来,它也是GoPro和Fitbit等美国可穿戴设备公司营收滑坡的元凶。独立市场研究公司Ra
机器人网
2018/04/25
8260
深圳华强北的成熟:从模仿到被模仿
为什么要进行建模仿真?建模仿真的用处多大?
今天,数字孪生、人工智能、工业互联网、边缘计算这些概念在整个产业里非常的火热,但是,要知道,如果这些概念没有“模型”作为基础的话,那么这些概念将无法真正落地,因为模型是数字世界与物理世界连接的桥梁,另一方面,仿真技术使得在复杂变化的制造现场可以实现非常多的虚拟测试、早期验证,降低整个制造业的整体成本,很多时候,我们必须了解为什么要进行建模仿真?
开物小编
2021/04/23
3.8K0
为什么要进行建模仿真?建模仿真的用处多大?
unity模仿mc放方块
   今天实现了unity技术模仿mc放方块的功能,由于目前是锁定视角的,所以做起来相对来说比较简单。
时光潜流
2022/12/26
9720
使用Python模仿文件行为
在Python中,你可以通过文件操作函数(如open()函数)以及模拟输入输出流的库(如io模块)来模拟文件行为。下面是一些示例,展示了如何使用这些工具在Python中模拟文件行为。
华科云商小徐
2024/04/15
2110
Linux基础之终端、控制台、tty、pty等概念简介
基本概念: 1>tty(终端设备的统称): tty一词源于teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。 2>pty(伪终端,虚拟终端): 但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty) 3>pts/ptmx(pts/pt
小小科
2018/05/02
3K0
/dev/null--Linux系统黑洞,解决控制台的刷屏问题
那么就可以编写一个脚本,把输出的内容全部扔进“黑洞”。此脚本模拟在hadoop102和hadoop103两台主机上循环执行jar文件:
孙晨c
2021/01/29
1K0
/dev/null--Linux系统黑洞,解决控制台的刷屏问题
Linux基础之终端、控制台、tty、pty等概念简介
tty一词源于teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
小小科
2019/11/05
3.5K0

相似问题

如何翻转linux控制台?

10

修复arch linux控制台

10

Linux串行控制台大小

10

有什么方法可以像WSL那样在Linux上模仿Windows吗?

20

在Linux控制台上显示重音

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档