使用 Snap.svg 循环播放动画

2024-02-22

背景:我使用 Snap.svg 渲染一个圆,然后在悬停时为其半径设置动画。我已经用下面的代码处理了该部分。

Problem:我试图获得一次循环“脉冲”效果circleRadar悬停在上面,这将涉及在初始r和新的r70. 虽然文档提到了 snap.animate(from, to,...)here http://snapsvg.io/docs/#Snap.animate看起来很有希望,我不知道如何在我的代码上下文中实现它。有更熟悉 Snap 的人可以提供帮助吗?谢谢!

Code:

//create the circle
circleRadar = s.circle(195, 345, 20);

//initial styling  
circleRadar.attr({
  fill: "#3f8403",
  opacity: 0.3
});

//animation
function testRadar(){
  circleRadar.animate({
    opacity: '1',  
  r: 70
  }, 1000, mina.elastic);
}

//trigger
circleRadar.hover(testRadar);

我怀疑 Snap 上的某个地方可能有重复功能,但我看不到它,所以如果有的话,那可能就是正确的方法。如果没有,您可以有 2 个动画并在它们之间切换。所以...

var animating = true;

//animation
function animOn(){
  if( animating ) {
    circleRadar.animate({
      opacity: '1',  
        r: 70,
        fill: 'none'
    }, 1000, mina.elastic, animOut);
  };
}

function animOut() {
  circleRadar.animate({
      opacity: '0.3',  
      r: 20,
      fill: 'none'
   }, 1000, mina.elastic, animOn);
};

circleRadar.hover(function() { animating=true; animOn() },      
    function() { animating=false });

这里有一把小提琴http://jsfiddle.net/TWBNE/29/ http://jsfiddle.net/TWBNE/29/(我怀疑上述内容可能需要调整,例如,如果您移出中间动画,重复动画有时可能会有点繁琐,具体取决于鼠标移动等。因此,您可能不希望在动画完成之前不允许重新启动)。另一种选择是制作 2 个使用“开始”属性的动画,并在其他 id 的“结束”处开始。

编辑:如果动画可能会保留很长时间,您可能需要检查内存使用情况。有些 Snap 版本的内存使用情况更糟,而且这个方法不能完成功能,所以我不是 100% 认为它会增加内存调用堆栈。如果它的动画非常快,它可能会更引人注目。

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

使用 Snap.svg 循环播放动画 的相关文章

  • RxJS - 我需要取消订阅吗

    如果我有这样的事情 class MyComponent constructor this interval Observbale interval 1000 const c new MyComponent const subscriptio
  • 选择多选选项最多 2 个

    我正在对不同主题使用多重选择 我想将选择限制为最多 2 个 并且如果用户取消选择 则以相同的方式禁用其他选项 同样 该选项必须可供用户使用
  • Javascript 函数指针,以参数作为函数中的参数

    不确定标题的措辞是否正确 或者是否有更好的表达方式 但我认为还可以 无论如何 到目前为止我了解以下内容 a b a b c foo 其中 foo 是在其他地方定义的函数 不接受任何参数 只会导致函数 a b 使用上述参数运行 然后可以在函数
  • 节点异步循环 - 如何使该代码按顺序运行?

    我知道有几个关于此的帖子 但根据我发现的那些帖子 这应该可以正常工作 我想在循环中发出 http 请求 并且不希望循环迭代 直到触发请求回调 我正在使用异步库 如下所示 const async require async const req
  • 元素存在之前的html5音频绑定时间更新

    我试图从音频标签绑定 timeupdate 事件 该标签尚不存在 我习惯这样做 body on click selector function e 我用音频标签尝试了这个 body on timeupdate audioPlayerJS a
  • 添加选中的单选按钮的总数

    UPDATE 如果您尝试此链接上的表格http jsfiddle net Matt KP BwmzQ http jsfiddle net Matt KP BwmzQ 按下小提琴并选择右上角的 40 英镑单选按钮 然后在底部看到订单总额 上面
  • 如何对像 Excel Pivot 这样两个键必须匹配的数组求和?

    我尝试对 Datum 和 Material 必须匹配的所有 Menge 和 Fehler 值求和 结果应类似于 Excel 数据透视表 到目前为止 这是我的代码 但我不知道如何添加也必须匹配的第二个键 Material 我希望你能理解我试图
  • 为什么人们将自己的自定义/用户函数添加到 jQuery 对象中? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我见过人们将自己的自定义 用户功能添加到jQuery目的 例如 myUserFunc function regular JS code 你为什么
  • 当key未知时如何获取js对象中的属性值

    我有一个对象数组 a 81 25 p 81 25 81 26 p 81 26 我想循环遍历数组并获取值p在每个元素中 for var key in a console log a key outputs 81 25 Object How d
  • 如何将数据从 JavaScript 发送到 Python

    我正在 jinja2 和 python2 7 上使用 GAE 进行 Web 开发 我可以从Python获取数据 但我无法将数据从 JavaScript 发送到 Python 这是 JavaScript 代码 function toSave
  • linkedin js 如何是有效的 javascript

    LinkedIn Javascript 集成是通过以下方式完成的 我不明白 这怎么是一个有效的javascript 为什么 api key 没有被引用 脚本标签的主体带有src永远不会被执行 但是 加载的脚本可以像访问任何其他元素的内容一样
  • es6-module 默认导出导入为未定义

    我不确定我在这里缺少什么 我正在使用 jspm 和 es6 module loader 开发一个项目 我有一个模块定义如下 import hooks from hooks import api from api import tools f
  • 当系列没有相同的时间值时,如何在工具提示中显示所有系列

    我有一个显示多个时间序列的图表 不同时间序列不会同时采样 有没有办法在工具提示中显示所有系列 在示例中 您可以看到所有系列都包含在前 2 个点的工具提示中 因为它们是同时采样的 其余点仅包含 1 个系列 var myChart echart
  • 全日历与 UTC 和本地日期的混淆

    我确实让 fullcalendar 正常初始化 所以它代表当前日期 午夜 gt 午夜 1 天 1 小时时段 我从其他一些数据源获取带有时间戳的数据 格式为 YYYY MM DD HH mm 作为字符串传输 无时区信息 因此 我将该字符串转换
  • 单击 btn 而不触发 div 单击未按预期工作

    代码沙盒 https codesandbox io s currying breeze depdc9 file package json https codesandbox io s currying breeze depdc9 file
  • 如何将类组件中的 props 发送到功能组件?

    我是 ReactJS 的初学者 需要知道如何将一个页面中的 props 值发送到另一个页面 道具位于第一页上我可以获取类组件值如何获取另一页中的值 提前致谢 墙色 jsx import React Component from react
  • JS - 如何将图像对象变成灰度并显示它

    基本上 当单击按钮时 它会告诉移动设备转到相机 一旦相机拍照 它就会给我图像数据 它被称为数据 URL 吗 这是我处理它的代码 var imagesrc data image jpeg base64 imageData var myimag
  • 如何在控制台中隐藏日志消息的来源?

    当将消息输出到控制台时 还会显示源代码 在 Chrome 开发者工具中 它位于右侧 console log Foo Source Foo test js 1 Output 但是 在某些网站上 会显示消息without正在显示的源 例如Fac
  • 调用一个从 AngularJS 表达式本地计算值的函数是不是很糟糕?

    我读了关于使用范围的一些 AngularJS 陷阱的文章 http thenittygritty co angularjs pitfalls using scopes 并且它指出您不应在表达式中使用函数 并且我知道每次框架认为需要时都可能会
  • 如何将函数导入到Vue组件中?

    我正在尝试将单个函数导入到我的 Vue 组件中 我为我的函数创建了一个单独的 js 文件 randomId js exports randomId gt My function 在我的 Vue 组件中 我导入了 Random js let

随机推荐

  • jQuery Select2 - 使用选项卡选择一个选项

    我希望能够使用箭头键到达我想要的 select2 选项 然后按 Tab 键选择该选项 然后像往常一样按 Tab 键转到下一个元素 我已经得到了向下箭头来打开 select2 如下所示 document on keydown select2
  • 删除除我想要的之外的所有数组元素?

    我有一个控制器 它从 HTML 表单中获取 post 参数 然后将它们发送到模型 该模型将数组插入到 Cassandra 数据库中 它是 SQLInjection 证明 因为它是 NoSQL 但是我担心用户可以模拟 100k post 参数
  • 在 Go 中,如何自动将循环索引强制转换为 uint?

    我有一些功能需要uint作为他们的输入 func foo arg uint func bar arg uint func baz arg uint 我有一个循环 其极限都是常数uint values const Low 10 High 20
  • 将图像存储在plist中

    我们如何将图像存储在 plist 文件中 这个plist文件存储在哪里 谁能给我举个例子吗 答案将不胜感激 The UIImage不直接实现 plist 中存储所需的 NSCoder 协议 但是 添加起来相当容易 如下所示 UIImage
  • 如何为 Ruby 应用程序创建 REST API?

    我想知道如何为 Ruby 应用程序提供 REST API 我可以基于 Ruby 的 TCPServer API 编写一些代码 但这似乎有点低级 您认为这会是一个好的解决方案吗 或者您推荐更好的方法 您可以使用Sinatra http www
  • 如何为 classyCountdown.js 插件设置特定的 GMT 结束时间?

    RE http www class pm files jquery classycountdown http www class pm files jquery classycountdown 这个简单的 jquery 倒计时插件完全按照我
  • Flutter 应用程序:IOS 模拟器未连接到 Android Studio

    在flutter开发中我想将iOS模拟器连接到android studio 当我从 android studio 打开 iOS 模拟器时 它会打开 但应用程序不会运行 它给出诸如 没有连接的设备 之类的错误 项目从 Xcode 运行 但从
  • 有没有办法将变量传递到 Meteor 中的模板中?

    我一直在尝试 Meteor 并遇到了一些我无法弄清楚的事情 为了好玩 我尝试制作一台老虎机 我有以下 HTML div class slot wrapper gt slot gt slot gt slot div
  • 在 Android 中更改 Maps V2 的地图标记的 z 索引(z 顺序)

    我的地图上显示了几个标记 这些标记要么彼此靠近 要么甚至彼此重叠 我需要一个特定的标记始终位于顶部 无论我首先还是最后将标记添加到地图中 它通常最终会被放置在某些标记后面 由于某种神秘的原因 谷歌地图确定了这一点 它需要与 Android
  • 意外的令牌导出

    作为一名新的 Angular 菜鸟 我正在尝试将我之前使用的 Angular 2 0 0 beta17 Web 应用程序升级到 Angular 2 3 0 现在我在加载 启动应用程序时遇到问题 这是我的设置 为了解决问题 我暂时复制了 we
  • 如何修复 java.lang.IllegalStateException:无法清除 JavaAgentClassRegister。 Set 方法尚未被调用。?

    我正在使用 JunitRunner 运行使用 PowerMock 和 Mockito 编写的单元测试 使用的 Spring Boot 版本是
  • 如何将数组分成两个子集并保持数组子值的总和尽可能相等

    我这里真的需要一个算法大师 所以问题是我得到了一个像这样的数组 870 23 970 78 110 50 我想把它分开 这样它看起来像这样 first array 970 78 second array 870 23 110 50 那么现在
  • Android 无效负载类型

    新的更新后 我发现操作栏和 LG 设备中可扩展 格式化字符串的兼容性问题 这是我之前的代码 SpannableString s new SpannableString About s setSpan new TypefaceSpan thi
  • 阻止用户调整 ListView 中的列宽?

    我的 Winform 中有一个 ListView 有 4 列 名称 金钱 ID 和级别 问题是当我运行我的应用程序时 我仍然有能力弄乱列宽 并改变它们 我搜索并发现我应该做这样的事情 private void listView1 Colum
  • MySQL 删除表

    我将使用什么 MySQL 语法来删除与它们具有相似模式的多个表 就像是 DROP TABLES FROM Database1 LIKE SubTable 由于准备好的语句支持 DROP TABLE 因此可以通过以下方式完成 SET tabl
  • Matplotlib 文本不会以 xkcd 字体显示

    当将 xkcd 与 matplotpib 一起使用时 没有任何字体以通常的漫画字体显示 有什么改变或者我做错了什么吗 x df Time y df Adjustment fig plt figure ax fig add subplot 1
  • 随机顺序和分页 Elasticsearch

    In 这个问题 https github com elasticsearch elasticsearch issues 1170 issuecomment 4587811是使用可选种子进行排序的功能请求 允许重新创建随机顺序 我需要能够对随
  • 使用 Javascript 替换文本字符串中的某些阿拉伯语单词[重复]

    这个问题在这里已经有答案了 我有一个阿拉伯语文本字符串 我想将一些单词加粗并在单词前添加图标 我用于英文文本的方法是 var wordsToBold Properties How To Use function makeBold input
  • 设置 urllib2.request() 调用的超时

    我需要设置超时urllib2 request 我不使用urllib2 urlopen 因为我正在使用data的参数request 我该如何设置这个 虽然urlopen确实接受data参数为POST 你可以打电话urlopen on a Re
  • 使用 Snap.svg 循环播放动画

    背景 我使用 Snap svg 渲染一个圆 然后在悬停时为其半径设置动画 我已经用下面的代码处理了该部分 Problem 我试图获得一次循环 脉冲 效果circleRadar悬停在上面 这将涉及在初始r和新的r70 虽然文档提到了 snap