2013-04-22 86 views
6

我刚刚使用Dart,并且我一直在尝试移植一些与svg一起工作的javascript代码,并在其中创建了一些包含段的路径, m努力了解它的API如何工作。在dart中创建一个路径:svg

下面的代码将不会运行,但它也许说明了我想做些什么:

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库文档的内容?我花了几个小时看文档,使用Google搜索并查看测试,但是我还没有发现任何似乎涵盖此内容的东西(测试似乎使用HTML代码而不是API来创建东西)。

任何能够让我指向正确方向的东西将会非常感谢!

更新

我花了更多的时间在看的功能,以及在pathSegList的“终局”不应该阻止它正在改变(这不是常量),刚刚更换。

但是,像“add”这样的各种函数,如果你尝试调用它们,就会被异常显式地实现,而一些函数(如append)则是本地实现的。

根据调试器:

p.pathSegList.append(
    p.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false) 
); 

将追加的路径segement,但这不会出现在“的innerHTML”属性,也没有在最终页面的HTML ...

我开始认为svg支持不是一个“完成的”,而且我有点试图转向画布和/或WebGL。

+0

作为参考,https://github.com/mythz/dart-samples/blob/ master/samples/logo/logo.dart是一个例子,其中整个svg标签是从原始输入创建的,但我无法找到一个动态SVG或通过API进行操作的示例。 – Dan 2013-04-23 13:43:47

回答

2

我能够创建路径元件和使用的PathSegListappendItem方法路径段添加到它:

var div = query('#container'); 
var svgElement = new svg.SvgSvgElement(); 
div.append(svgElement); 
path = new svg.PathElement(); 
svgElement.append(path); 

segList = path.pathSegList; 

segList.appendItem(path.createSvgPathSegMovetoAbs(50, 50)); 
segList.appendItem(path.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false)); 
segList.appendItem(path.createSvgPathSegClosePath());