HTML5 Canvas 打字机效果与自动换行?

2024-01-11

我正在尝试在 HTML5 Canvas 上获得动画打字机效果,但我真的很难处理自动换行。

这是我的 Shapes.js 要点:https://gist.github.com/Jamesking56/0d7df54473085b3c5394 https://gist.github.com/Jamesking56/0d7df54473085b3c5394

在那里,我创建了一个具有很多方法的 Text 对象。其中之一称为typeText().

typeText()基本上开始打字效果,但它不断下降,我真的很难找到一种修复自动换行的方法。

有人可以指导我最好的方法是什么吗?


我用过的一个解决方案大致是:

var maxWidth = 250;
var text = 'lorem ipsum dolor et sit amet...';

var words = text.split(' ');
var line = [words[0]]; //begin with a single word

for(var i=1; i<words.length; i++){
    while(ctx.measureText(line.join(' ')) < maxWidth && i<words.length-1){
        line.push(words[i++]);
    }
    if(i < words.length-1) { //Loop ended because line became too wide
        line.pop(); //Remove last word
        i--; //Take one step back
    }
    //Ouput the line
}

由于似乎无法测量输出文本的高度,因此您需要手动将输出的每一行偏移一些硬编码的行高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 Canvas 打字机效果与自动换行? 的相关文章

  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • 如何在使用页面锚点导航时设置“激活”类以在 Angular 2 中引导导航栏?

    我正在使用 Angular 2 和 Bootstrap 4 创建一个单页网站 我创建了一个始终位于页面顶部的导航栏组件 并且我正在使用页面锚点导航 id 请注意 我还没有创建路由模块 到目前为止还没有必要这样做 导航栏代码如下
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • 如何阻止破折号自行包裹?

    我有一个标题 标题最后一个单词的末尾是一个破折号 单词和破折号之间没有空格 当浏览器窗口变小时 破折号会中断并换成新行 在自己的行上有一个破折号是不好的排版 如何停止破折号之前的换行 以便最后一个单词运行到新行 这是代码 h1 XYZ co
  • 为什么在 Internet Explorer 中访问 localStorage 对象会引发错误?

    我正在解决一个客户端问题 Modernizr 意外地没有检测到对localStorageInternet Explorer 9 中的对象 我的页面正确使用 HTML 5 文档类型 并且开发人员工具报告该页面具有 IE9 的浏览器模式和 IE
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 更改文本输入标签中文本的大小?

    我有一个很大的文本输入框 但我无法更改字体大小
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win
  • 无效字符错误:“fred”

    我确信他一定是一个新手问题 简单来说 我想定义我的第一个 Polymer dart 组件 只是我一直在同一个减速带上踢脚趾 为了使事情变得非常简单 我将其简化为一个非常简单的示例 我做了一个简单的rename示例 跑表 来自 Dart 组件
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如

随机推荐

  • 谷歌地图,没有启动导航的选项,只有预览

    在我的应用程序中 我在以下代码集的帮助下启动 Google 导航 String uri http maps google com maps saddr gpsLatitude gpsLongitude daddr updateAccepte
  • OSX Yosemite 升级后 adb(android 调试桥)出现问题

    我昨天将我的 2011 款 13 英寸 Macbook 升级到了 Yosemite 现在我在使用 adb 工具 1 0 31 1 0 32 时遇到问题 例如在设备上安装构建时 通过 ddms 复制文件 从eclipse android st
  • jsplumb 1.4.1 通过 uuid 或对象示例删除Endpoint

    我有一些 div 元素 每个元素有 2 个端点 一个在左侧 一个在右侧 现在我想删除每个右侧端点 每个端点都有自己唯一的 uuid 我得到了右侧端点的每个 uuid 的数组 gt 遍历它们并删除其中的每一个 但这不起作用 谁能给我一个通过
  • 使用内收益回报

    如果我没记错的话 当我在里面使用yield时using SqlConnection阻止我遇到运行时异常 using var connection new SqlConnection connectionString var command
  • 如何在 Java Swing 中显示英镑 (£) 符号?

    目前 我向 Java 源代码添加了英镑 符号 并编译生成的 Swing 组件 显示为方形 不支持的字符 符号 我怀疑这是一个编码问题 Java源文件被编码为cp1252 Eclipse似乎默认是这样 解决这个问题的正确方法是什么 使用 u0
  • PHP 命令行不运行 PHP 文件?

    我目前正在从 Windows 命令提示符处触发 PHP 使用 C xampp php gt php f c Uncrypt php 哪个输出 根据帮助文档 这很奇怪php h 的开关 f should f 解析并执行 但是 这不起作用 PH
  • 为什么 d3 更新整个数据

    我有一个 svg 元素 其数据是这样创建的 var chart d3 select my div append svg var chartData chartData push x 1 y 3 x 2 y 5 chartData push
  • split() 操作后获取 pandas 中唯一的字符串列表

    我正在开始使用熊猫 并且已经较大 DataFrame 中的一列数据例如 0 one two 1 two seven six 2 three one five 3 seven five five eight 4 six four 5 thre
  • 如何在 Windows git-bash 终端上获得彩色输出?

    如何在输出上获得彩色突出显示 e g npm start npm test etc System Windows 10Git 版本 2 16 1 windows 4节点5 6 0 卸载适用于 Windows 10 的 Git Bash 并再
  • 如何将 MultiAutoCompleteTextView 中的结果设置为来自网络源而不是静态或数据库结果?

    我有一个带有 MultiAutoCompleteTextView 的应用程序 我需要将结果设置为来自 Web 源 JSON XML 或任何格式 我该如何执行该操作 或者更清楚地了解当我创建自己的自定义适配器时需要更改什么自动完成 好吧 我在
  • 列表结果集

    我想将 JSP 页面中的结果集转换为列表 并想要显示所有值 这是我的查询 SELECT userId userName FROM user 我已经使用它执行了准备好的声明并得到了结果集 但如何将其转换为List并想像这样显示结果 userI
  • 我可以使用 CDN 中的 ES 模块库吗?

    我想通过 CDN 使用这个库 https www jsdelivr com package npm lit element https www jsdelivr com package npm lit element 我的js代码在这里 i
  • 我自己的 Angular Material ui 风格

    Material ui 我想定制它 不幸的是 我自己的样式被框架样式覆盖了 例如 当我声明 md toolbar 的样式时 md toolbar background red 该声明被材料覆盖 我添加了 important指令它有帮助 但我
  • conda env 在幕后做了什么?

    搜索后没有找到 我必须在这里问 如何conda env在幕后工作 这意味着 anaconda 如何处理环境 为了澄清 我想要一个答案或参考以下问题 里面保存的是什么envs myenv folder 发生了什么activate myenv
  • awk 脚本和 for 循环

    我有一个数据集t txt 827 819 830 826 828 752 752 694 828 728 821 701 724 708 826 842 719 713 764 783 812 820 829 696 697 849 840
  • SVD算法实现

    有谁知道 C 上 SVD 对于非常大的矩阵的良好可扩展实现吗 ILNumerics net http ilnumerics net 似乎有 SVD 除其他外 功能列表 http ilnumerics net main php site 21
  • 从不同项目调用 Partial View

    在项目中我正在使用这段代码 Html Partial ReferenceChangeLog ReferenceChangeLogPopUp 用于调用控制器和操作 这里ReferenceChangeLog是控制器名称 ReferenceCha
  • rpart 树中的标签错误

    在 R 中使用 rpart 时遇到一些标签问题 这是我的情况 我正在处理带有分类变量的数据集 这是我的数据的摘录 head Dataset Entity IL CP TD Budget 2 1 3 2 250 5 2 2 1 663 6 1
  • Java 泛型 - 如果调用的方法中不存在类的泛型类型,为什么会出现“不兼容类型”编译错误? [复制]

    这个问题在这里已经有答案了 请注意 下面的代码无法编译 方法结果分配失败 String s a method abc 编译错误 incompatible types java lang Object cannot be converted
  • HTML5 Canvas 打字机效果与自动换行?

    我正在尝试在 HTML5 Canvas 上获得动画打字机效果 但我真的很难处理自动换行 这是我的 Shapes js 要点 https gist github com Jamesking56 0d7df54473085b3c5394 htt