0

在某些事件发生后以某种方式操纵形状的通常过程是很好理解的:

var circle = group.createCircle({ cx: 100, cy: 300, r: 50 }).setFill("green").setStroke("pink");
circle.connect("onclick",function(e) {
    circle.setFill("red");
});

问题是,我正在处理的图形已从 SVG 文件转换为 JSON,然后加载到 dojox,这意味着我实际上没有可以通过变量引用的形状对象。所以我的问题是,我如何从偶数监听器中检索形状对象?像这样的东西不起作用:

...
var group = surface.createGroup();
dojox.gfx.utils.deserialize(group, json);
dojo.connect(group.getEventSource(),"onclick",function(ev) {
    ev.target.setFill('blue');
});

事件目标是实际的形状节点,而不是对象,所以我不能像setFill()它那样调用任何 dojox 方法。我可以只使用普通的 SVG DOM 方法,但是如果 dojo 为 IE 使用不同的渲染器,那会中断。

那么我可以以某种方式将该节点转换为形状对象吗?我的意思是,如果这不起作用,那么像我所描述的那样将图形加载到道场有什么意义?我觉得我在这里遗漏了一些明显的东西。

4

1 回答 1

0

这有效:

group.connect("onclick",function(ev) {
    ev.gfxTarget.setFill('#ff0000');
});

而不是文档当前建议的方式:使用onmouseclick事件。然后您可以访问形状对象作为gfxTarget事件对象的属性。

于 2012-11-09T14:38:59.150 回答