我是使用 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。