0

図形の配列を動的に作成することができ、それらはさまざまな座標にうまく配置されています。

ただし、そのループ内でイベントを割り当てようとすると、クリックの結果は常に同じになります。クリックイベントがまだ私のループの最後の反復を参照しているように。

私は何が間違っているのですか?ありがとう!

編集:実際には、隔離された環境でこの動作を再現しました:

var stage = new Kinetic.Stage({
        container: 'container',
        width: 1024,
        height: 768
    });
    var layer = new Kinetic.Layer();
    singleSegment=40;
    for (var i = 0; i < 4; i++) {
                depth=singleSegment+(singleSegment*i);
                dotLabel = new Kinetic.Text({
                    x: depth,
                    y: depth,
                    text: "test"
                });
                dotLabel.on('click', function(evt){
                    console.log(this.x);
                });
                layer.add(dotLabel);
    }
    stage.add(layer);

これらの4つのラベルに異なるイベントを追加するにはどうすればよいですか?

4

2 に答える 2

2

あなたはすべて正しいことをしていると思います。しかし、これが原因です。

            console.log(i);

i の最後の値は array.length-1 で、クリックするとその値が表示されますが、クリックするとループの外にあるため変化しません。

これにより、異なる値が表示されます。

            console.log(this.attrs.x);
于 2013-03-15T18:53:37.523 に答える