Javascript 从事件侦听器获取形状对象
在某些事件发生后,以某种方式操纵形状的通常程序已被充分理解:Javascript 从事件侦听器获取形状对象,javascript,dojo,dojox.gfx,Javascript,Dojo,Dojox.gfx,在某些事件发生后,以某种方式操纵形状的通常程序已被充分理解: 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 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');
});
事件目标是实际的shape节点,而不是对象,因此我不能对其调用任何dojox方法,如setFill()
。我可以只使用普通的SVG DOM方法,但如果dojo为IE使用不同的渲染器,这种方法就会失效
我能把这个节点转换成一个形状对象吗?我的意思是,如果这不起作用,那么像我描述的那样将图形加载到dojo有什么意义呢?我觉得我在这里遗漏了一些明显的东西。这是有效的:
group.connect("onclick",function(ev) {
ev.gfxTarget.setFill('#ff0000');
});
而不是当前建议的方式:使用onmouseclick
事件。然后可以作为事件对象的gfxTarget
属性访问形状对象