问题标签 [snap.svg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
2319 浏览

javascript - Catmull-Rom 样条到贝塞尔样条转换器

我正在尝试从snap.svg移植 catmullRom2bezier 函数以与画布一起使用(我仅将它用于封闭路径):

这是我尝试使用它的方式:

但我必须遗漏一些东西才能让它工作,因为生成的路径没有完全圆润。

0 投票
1 回答
1335 浏览

snap.svg - Snap SVG 中带有变量的曲线路径

我正在尝试在snap svg中创建一条使用变量而不是数字的弯曲路径。

我有这个基本的例子工作:

但是当我插入一个变量时,该行消失了:

0 投票
3 回答
10749 浏览

javascript - 如何使用 Snap.svg 更新 SVG 文本元素?

我正在使用 Snap.svg 加载 SVG 图像并向其添加文本元素。但是,我需要能够在页面加载时更新文本元素。

现在,我正在做这样的事情:

假设我想稍后更新文本,我该怎么做?我保证text在调用load.

我设法修改文本的唯一方法是设置id元素,然后像这样使用 jQuery 进行操作:

self.selector.find("#my_id")[0].textContent = "New text";

但是,这感觉真的不对,我想我可能只是缺少 Snap API 的一些东西。

0 投票
1 回答
2106 浏览

svg - 使用 snap svg 在 SVG 图中操作/拖动/隐藏/显示节点

我有一个由 GraphViz 工具生成的 SVG 网络图(节点和边)。我想让图表在某种意义上具有交互性,它应该是可拖动的,单击一个节点时,其他一些节点将被隐藏.ETC。有人能建议 snapSVG 就足够了吗?我不能在 SVG 图表中添加任何东西,这是我的限制。我们如何使现有的 svg 图强制定向?任何帮助,起点,小提琴都会有所帮助。我掌握了 d3.js 是否可以通过 d3.js 实现?

0 投票
1 回答
860 浏览

snap.svg - Snap 是否适用于模板

index.html 文件如下: 这个 HTML 是用 Handlebars 编译的

index.js 文件如下:

当我执行我的代码时。它向我显示以下错误:

0 投票
2 回答
2957 浏览

javascript - 如何使用 Snap.SVG 和 Javascript 使一组 SVG 形状居中

我正在尝试制作一个矩形圈,在 SVG 中居中(垂直和水平)

到目前为止,这是我的代码:

http://jsfiddle.net/JamThom/7G2pC/

为了做到这一点,我认为我需要首先选择并分组所有矩形,但是当我在 for 循环中创建它们时,它们没有单独的名称,我不知道如何定位它们

任何帮助表示赞赏并为我的代码的 ameteur-ness 道歉 - 这是我对 snap.svg 的第一次体验

0 投票
2 回答
1457 浏览

snap.svg - 在 snap.svg 中手动触发拖动事件

如何在 Snap.svg 中手动触发拖动事件?

我有一个附加到元素的拖动事件:Element.drag(dragMove,dragStart,dragEnd),并希望以编程方式触发此事件。

我曾尝试触发调用 Element.events[i].f() 的事件,其中 i 表示拖动事件,但它似乎不起作用。

0 投票
1 回答
4476 浏览

javascript - Snap.SVG:如何像使用圆形和矩形一样使用 (x, y) 定位路径对象?

我有一个 SVG 容器作为填充整个页面的 Paper。在这个容器中,我以网格模式显示元素。

假设每个形状填充一个 100 x 100 像素大的空间,网格为 500 x 500 像素大。我希望在第一个单元格中具有位置 (0, 0) 的形状,在最后一个单元格中具有位置 (400, 400) 等的形状。

尽管 Snap.SVG 允许为 Paper.rect 和 Paper.circle 等形状设置 x 和 ay(或 cx 和 cy),但似乎没有针对 Paper.path 或 Paper.polyline 的详细记录方法元素。当然,这种行为应该是意料之中的,因为正如官方文档中所指出的,Paper.polyline 是用多个 x 和 y 变量定义的(而 Paper.path 似乎根本没有)。因此,我只设置一个 x 或 y 并期望整个形状移动是没有意义的。但是,这是有问题的,因为我试图多次为 Paper.path 定位相同的设计,而不必更改其原始路径字符串。

虽然我找到了使用 Path.polyline 的解决方法,但它总体上并不理想,尤其是在扩大网格长度时。我应用了一个映射函数,将每个 Paper.polyline 坐标转换为网格中它应该结束的位置。我敢打赌,为我打印的每个形状迭代每个坐标是一个不必要的昂贵过程,并且必须有一种方法为整个元素本身设置全局 x 和 y。

0 投票
2 回答
6138 浏览

snap.svg - 如何使用 snap.svg 对动画进行排序?

我正在尝试使用http://snapsvg.io/按顺序为多个对象设置动画。

我希望第一个对象移动,一旦完成,第二个对象移动等等。

取而代之的是下面的代码,所有的东西都同时动画。

您需要采取什么方法来控制事物何时具有动画效果?似乎没有一个回电可以联系。

0 投票
1 回答
970 浏览

javascript - 如何使用 Snap.svg 在 Karma 中编写与 SVG 图形交互的单元测试?

我正在开发一个使用 SVG 图形进行大部分显示和交互的网络应用程序。我想使用 Karma 创建加载 SVG 资产的单元测试,确保存在某些组/路径等。

我还没有找到任何关于如何做到这一点的直接答案,或者我自己还没有找到答案。我正在尝试通过这样的简单测试(使用 mocha & chai):

最初,我假设在 karma.conf.js 的“文件”指令中包含 svg 文件就足够了:

但是,尝试从app/img/decal.svgbase/app/img/decal.svg同时加载 svg 文件会导致 404 错误。我也尝试过使用“代理”指令,如this SO answer中所述,但还没有让它工作(如上所示)。

这是业力可以做的事情,还是应该以不同方式处理的用例?我需要加载 SVG 并与之交互,以便为这个游​​戏编写单元测试。