Получить объект формы от слушателя события

Обычная процедура для манипулирования фигурами после некоторого события хорошо понятна:

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, например.

Так я могу как-то преобразовать этот узел в объект формы? Я имею в виду, если это не сработает, какой смысл загружать графику в додзё, как я описал? Я чувствую, что мне здесь не хватает чего-то очевидного.

1 ответ

Это работает:

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

вместо того, как документы в настоящее время предлагают: использование onmouseclick событие. Затем вы можете получить доступ к объекту формы как gfxTarget свойство объекта события.

Другие вопросы по тегам