【问题标题】:Get shape object from event listener从事件监听器获取形状对象
【发布时间】:2012-11-09 13:20:13
【问题描述】:

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

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');
});

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

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

【问题讨论】:

    标签: javascript dojo dojox.gfx


    【解决方案1】:

    这行得通:

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2011-12-09
      • 1970-01-01
      • 2010-12-30
      • 2016-12-26
      • 2015-07-15
      相关资源
      最近更新 更多