Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从事件侦听器获取形状对象_Javascript_Dojo_Dojox.gfx - Fatal编程技术网

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
属性访问形状对象