如何使用贝塞尔曲线沿着路径制作图像动画

2024-03-04

My goal:

  • 沿着如下图所示的路径移动/动画图像(可能连接贝塞尔曲线)。
  • 必须在 IE7+ 下工作,不要构建多个解决方案。
  • 我可以暂停/恢复移动图像。
  • 图像将沿着路径继续移动(重复)。

我考虑过什么

  • CANVAS:IE7+8不支持,尚未测试explorercanvas!预见一些 z-index 问题。
  • SVG,IE7+8 不支持。
  • jQuery.path,一个扩展 jQuery animate 功能的插件。无法弄清楚简历部分,我想在支持时使用 CSS 转换。

My plan

  • 使用 CSS 3D 变换、CSS 2d 变换或 jQuery.animate(支持的)和 requestAnimationFrame 对图像进行动画处理。
  • 计算所有坐标并简单地逐像素移动图像。

我的问题

  • 我的计划听起来很疯狂吗?更好的建议?
  • 您预见到一些性能问题吗?我最终可能会得到 5K 或 10K 坐标。
  • 你知道计算所有坐标的聪明方法、程序、函数或类似的东西吗?

有一个小脚本(基于 SVG),专门用于非直线的动画,
called 路径动画器 https://github.com/yairEO/pathAnimator/(2kb),非常非常小而且非常高效。
不需要 jQuery。

例如:

var path = "M150 0 L75 200 L225 200 Z";         // an SVG path
    pathAnimator = new PathAnimator( path ),    // initiate a new pathAnimator object
    speed = 6,              // seconds that will take going through the whole path
    reverse = false,        // go back or forward along the path
    startOffset = 0,        // between 0% to 100%
    easing = function(t){ t*(2-t) };    // optional easing function


pathAnimator.start( speed, step, reverse, startOffset, finish, easing);

function step( point, angle ){
    // do something every "frame" with: point.x, point.y & angle
}

function finish(){
    // do something when animation is done
}

(甚至可以使用更有效fastdom https://github.com/wilsonpage/fastdom)

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

如何使用贝塞尔曲线沿着路径制作图像动画 的相关文章

  • 将 next.js 与纱线工作区结合使用

    今天遇到了这样的项目结构的复杂情况 packages app pages package json ui kit pages package json shared babelrc package json root lvl 包 json
  • JS 在两个或多个点之间画线

    我需要在两个标签或标签之间画一条线 Example http caitriona github io connect the dots http caitriona github io connect the dots 我需要做这样的事情
  • 使用 Gmail 上下文小工具访问附件

    我想将电子邮件及其附件从 Gmail Google Apps 保存到另一个数据库以实现类似 CRM 的功能 然而 根据docs http code google com apis gmail gadgets contextual 提取器无法
  • mocha.opts 已弃用,如何迁移到 package.json?

    我正在开发一个大型项目 自从上周我更新了摩卡以来 现在我们收到警告 DeprecationWarning 通过 mocha opts 进行的配置已被弃用并且 将从 Mocha 的未来版本中删除 使用 RC 文件或 改为 package js
  • 我可以用一个简单的函数制作一个迭代器吗? (没有生成器或 Symbol.iterator)

    我一直在尝试使用普通函数创建一个迭代器 而不使用生成器或使用Symbol iterator用于学术目的的协议 为此 我创建了一个函数 它返回一个带有next参数 但尝试将其作为iterable的论证for of循环会产生不需要的结果 这是到
  • 如何将节点 sqlite3 与 q (promise) 一起使用

    我正在尝试将 Promise 与 sqlite3 一起使用 这是我的源代码的一部分 this deleteTag function tag project var db this db if project return q nfcall
  • Javascript 制作音频 blob

    我正在测试 html 音频标签 我想制作音频 blob url 就像 youtube 或 vimeo 那样 并将其添加到 src 开始播放音频 我一直在测试new Blob and URL createObjectURL 但我不知道如何使用
  • 处理时区转换的 JavaScript 库

    是否有一个 JavaScript 库可以处理时区转换 并考虑 DST 规则和此类内容 我知道有类似的问题 但我见过的问题似乎都没有真正适合我的问题的答案 我想在时区 A 创建一个日期并能够对其进行操作 添加天数 小时等 然后将其转换为另一个
  • 如何检查侧边栏视图是否已经在主干中渲染?

    通常 用户通过主页进入网站 然后我在那里渲染侧边栏视图 接下来 用户单击链接 路由器呈现另一个视图并替换原始内容视图 侧边栏视图不会重新渲染 当用户在子页面上单击刷新时 侧边栏不会呈现 如何检查视图是否存在并且已渲染 划分责任并坚持下去 不
  • 在 Windows 上静默安装 Qt55 Enterprise

    编辑 在 Qt 支持的帮助下 我已经解决了如何自动化 Qt 企业安装程序的这两个部分 下面是脚本调用 我正在尝试在 Windows 8 1 和 Windows 10 上静默安装 Qt 5 5 1 Enterprise 使用 script 开
  • 如何在使用类型分散时将箭头添加到行尾

    如何在 y 不等于 0 且系列类型以线宽 2 分散的情况下正确地将箭头添加到行的每一端 在这里我可以看到箭头已添加但未正确添加 请看这个 部分工作小提琴 http jsfiddle net vnYCX 这是我的 JS 最初的原型是由 sta
  • 如何使用 Node.js 解析 JSON? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我应该如何使用 Node js 解析 JSON 是否有一些模块可以安全地验证和解析 JSON 你可以简单地使用JSON parse h
  • Intern JS - 如何在链式 Command 方法中使用 Promise.all()?

    我是用 Intern JS 编写测试的新手 并且一直在遵循他们的文档来使用对象接口 https theintern github io intern interface object and 页面对象 https theintern git
  • Jquery Ajax 调用返回 403 状态

    我有一个 jquery Ajax 调用来实现会话的 keepalive 这个 keepAlive 方法将每 20 分钟调用一次 function keepAlive ajax type POST url KeepAliveDummy asp
  • Kendo 刷新 (DropDownList.refresh()) 不起作用错误未定义

    我试图在另一个 DropDownList 更改后刷新下拉列表 但 Refresh 方法未定义错误正在升级 我尝试再次读取数据源 它显示它正在加载 但数据仍然相同 帮助解决这个问题请 Code DropDownList1 change fun
  • 引导网格中的绘图图周围有巨大的空白

    我有一个 Net 应用程序 我试图在其中使用创建一个图表bootstrap js and plotly js 当我创建响应式图表时 我遇到网格中存在巨大空白的问题 我发现问题的一部分是plotly svg container的大小默认高度为
  • “memset”没有 DLL 那么如何 ctype 它

    如何使用memset在 jsc 类型中 没有对应的 DLL 我搜索 搜索了 js ctype 代码 但找不到要破解的示例 如果你只是想memset一个数组为零字节 然后我有 好消息 大家 js ctypes 会将新数组初始化为零 否则 最简
  • 使用 javascript 从亚马逊 URL 中抓取 ASIN

    假设我有一个像这样的亚马逊产品 URL http www amazon com Kindle Wireless Reading Display Generation dp B0015T963C ref amb link 86123711 2
  • 为什么 phantomjs 不能在 MacOS Sierra 中工作?

    我们正在使用phantomjs 1 9 1 macosx phantomjs 2 0 0 macosx哪一个工作得很好OS X 埃尔卡皮坦更新后macOS 塞拉利昂它会引发以下错误 phantomjs 1 9 1 macosx phanto
  • 用于替换前 5 个数字的正则表达式,无论它们之间有什么?

    我正在努力实现以下匹配 Input 123 45 6789 123456789 1234 正则表达式尝试输出 d 5 123 45 6789 123456789 1234 d 2 3 123 45 6789 123456789 1234 d

随机推荐

  • Android RTP/RTCP 堆栈

    我正在寻找一个堆栈 库 它可以让我充分利用 Android 下 RTP 和 RTCP 协议的所有标头字段 我不知道这是否重要 但我想将它与我用于 SIP 和 SDP 的 JAIN SIP 堆栈结合起来 有没有人有任何经验或建议 The an
  • 如何从重叠的日期中获取单独的间隔

    我有一个包含开始日期和结束日期的表格 如下所示 drop table if exists Temp select into Temp from values 1 1 2011 10 09 2011 10 20 2 1 2011 10 14
  • .NET RegionInfo 类

    当我尝试使用某些 ISO 3166 国家 地区代码 孟加拉国的 BD 索马里的 SO 斯里兰卡的 LK 创建新的 RegionInfo 时 我收到一个 ArgumentException 表示它无法识别 这是怎么回事 RegionInfo
  • 注销 Django Rest Framework JWT

    我想问一下 当我使用 JWT 时注销是否是一个好主意 要登录 我发送一个带有用户名和密码的发布请求 以获取所需的令牌 保存到 localStorage 中 当然 这将允许我向需要令牌的视图发送进一步的请求 但我不确定应该如何注销用户 我可以
  • 如何写入 OSX 系统钥匙串?

    作为在 OSX 中使用 Cocoa 以编程方式创建 VPN 连接的过程的一部分 我需要将 PPP 密码存储在系统钥匙串中 当我尝试使用钥匙串 API 执行此操作时 由于调用 SecKeychainAddGenericPassword 出现以
  • 在另一个 Div 内对齐 Div

    You can visit the site I am working on here https web archive org web 20140304201224 http www thomashall idesignclass co
  • swift 2 中排序和 sortInPlace 之间的区别?

    我一直在尝试快速使用 sortInPlace 函数 但它不起作用 当我使用排序函数而不是 sortinplace 时 它 可以工作 请解释一下这两个函数之间的区别 如果您可以提供演示这两个函数的使用的小代码示例 那将非常有帮助 var mu
  • jsPDF addHTML 将低质量图像导出为 PDF

    最近两天搜索的简单问题但没有找到解决方案 我正在使用 jsPDF 的 addHTML api 将 html 转换为 pdf loadPdf on click function var pdf new jsPDF p in a4 pdf ad
  • 使用 ShinyFiles 加载数据文件

    我的 Shiny 应用程序应该加载几个数据文件 为了实现这一目标 我尝试使用ShinyFiles package https github com thomasp85 shinyFiles From ui R shinyFilesButto
  • 包中的 Cython Pickling“未找到”错误

    我在腌制 Cython 类时遇到问题 但仅当它在包内定义时才有效 这个问题被注意到了以前在线 https groups google com forum msg cython users efRRFJVuZh8 x2 R8qHBlCkJ 但
  • 如何在Python中将光标重置到同一行的开头

    SO 中与此主题相关的大多数问题如下 如何在不引入的情况下在同一行打印一些信息 新队 Q1 https stackoverflow com questions 3249524 Q2 https stackoverflow com quest
  • ZF2 文件上传集合

    我无法让我的文件上传集合正常工作 这就是我所做的 https gist github com manuakasam 1ac71daf7269616f55f0 https gist github com manuakasam 1ac71daf
  • Spring websocket - 如何获取会话数

    我在用着this https spring io guides gs messaging stomp websocket 教程 我试图弄清楚如何获取当前会话的数量 我的 WebSocketConfig 如下所示 从教程中复制并粘贴 Conf
  • Spring Boot JacksonTester 自定义序列化器未注册

    尝试运行 Jackson 库来完成一些即将进行的工作 我有以下测试模型 地址 java package com example domain import java time LocalDate import org apache comm
  • 两个值之间的百分比差异

    我使用以下简单的 JavaScript 代码来计算两个值之间的百分比差异 subOBS001 vars obs001acount vars obs001asent divOBS001 subOBS001 vars obs001asent m
  • 在批准之前测试 Facebook 集成

    我想测试一个正在开发的移动应用程序 它将使用 Facebook API 来登录用户并读取共同的好友信息 然而 据我所知 除非应用程序经过验证 否则我无法使用 API 登录用户 但为了验证应用程序 审核团队将 需要测试和验证 我的 Faceb
  • Android Studio - 模拟器:进程已完成,退出代码 -1073741819 (0xC0000005)

    每当我尝试使用模拟器运行 Android 应用程序时 都会出现错误消息 模拟器 进程已完成 退出代码 1073741819 0xC0000005 随着 模拟器 无法初始化模拟帧缓冲区 有什么解决办法吗 您应该擦除 avd 管理器中的数据并冷
  • 如何降级命令行工具 MacOS

    我遇到了动态链接器错误 clock gettime符号所以我按照这篇文章所说的做了通过 RVM 在 OS X 10 11 6 上安装 ruby 2 3 0 时缺少符号 https stackoverflow com questions 39
  • Mongoose 可选搜索查询参数?

    我有以下情况 我需要根据某些参数 如果存在 构建猫鼬查询 IE 如果这样的对象被传递 player nickname action capture 执行以下搜索 Entry find player obj player action obj
  • 如何使用贝塞尔曲线沿着路径制作图像动画

    My goal 沿着如下图所示的路径移动 动画图像 可能连接贝塞尔曲线 必须在 IE7 下工作 不要构建多个解决方案 我可以暂停 恢复移动图像 图像将沿着路径继续移动 重复 我考虑过什么 CANVAS IE7 8不支持 尚未测试explor