在某些事件发生后以某种方式操纵形状的通常过程是很好理解的:
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 使用不同的渲染器,那会中断。
那么我可以以某种方式将该节点转换为形状对象吗?我的意思是,如果这不起作用,那么像我所描述的那样将图形加载到道场有什么意义?我觉得我在这里遗漏了一些明显的东西。