【发布时间】:2013-04-22 11:02:52
【问题描述】:
我是使用 Dart 的新手,我一直在尝试移植一些与 svg 一起使用的 javascript 代码,创建一个包含一些段的路径,但我很难理解 API因为它有效。
以下代码不会运行,但它可能说明了我想要做什么:
Element i = query("#divsvg");
svg.SvgSvgElement s = new svg.SvgSvgElement();
i.append(s);
svg.PathElement p = new svg.PathElement();
p.pathSegList.add(
p.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false)
);
s.children.add(p);
但是,据我从文档中了解到:
- createSvgPathSegArcAbs 创建一个非父路径段
- pathSegList 是最终的,所以你不能在构建后添加它
- PathElement 构造函数似乎不接受任何参数
我是否遗漏了有关 Dart 工作原理或 svg 库文档中的某些内容?我花了几个小时查看文档、谷歌搜索和查看测试,但我没有找到任何似乎涵盖这一点的东西(测试似乎使用 HTML 代码而不是 API 创建东西)。
任何指出我正确方向的东西都将非常感激!
更新
我花了更多时间查看函数,pathSegList 的“最终性”不应该阻止它被更改(它不是 const),只是被替换了。
但是,如果您尝试调用它们,诸如“add”之类的各种函数会显式实现并带有异常,而一些函数(例如 append)是本机实现的。
根据调试器:
p.pathSegList.append(
p.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false)
);
将附加一个路径段,但这不会出现在“innerHTML”属性中,也不会出现在最终页面的 HTML 中...
我开始认为 svg 支持根本不是“完成”,并且有点想只移植到画布和/或 WebGL。
【问题讨论】:
-
作为参考,github.com/mythz/dart-samples/blob/master/samples/logo/… 是一个从原始输入创建整个 svg 标签的示例,但我找不到动态 SVG 或通过 API 进行操作的示例。