0

何らかのイベントが発生した後に何らかの形で形状を操作する通常の手順は、よく理解されています。

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 用に別のレンダラーを使用していた場合、それは機能しなくなります。

それで、どうにかしてそのノードを形状オブジェクトに変換できますか? つまり、それがうまくいかない場合、私が説明したように道場にグラフィックをロードする意味は何ですか? ここで明らかな何かが欠けているように感じます。

4

1 に答える 1

0

これは機能します:

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

ドキュメントが現在提案している方法の代わりに、onmouseclickイベントを使用します。gfxTargetその後、イベント オブジェクトのプロパティとしてシェイプ オブジェクトにアクセスできます。

于 2012-11-09T14:38:59.150 に答える