Получить объект формы от слушателя события
Обычная процедура для манипулирования фигурами после некоторого события хорошо понятна:
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
свойство объекта события.