2

jQuery では、以下のようにスコープの問題を処理するために、追加の変数をイベントに渡すことができます。

$('#element').click({index: i}, function(event){
    console.log(event.data.index);
});

on event メソッドではこの機能が提供されないため、KineticJS でこれを行うにはどうすればよいですか? 配列を使用して円を生成することはできましたが、各イベントに特定のデータを渡すことができないようです:

var data = [12.22, 34.45, 8.9];
var circles = [];

for(var i in data){
circles[i] = new Kinetic.Circle({
    x : Math.random() * stage.getWidth(),
    y : Math.random() * stage.getHeight(),
    radius : 4,
    fill : 'white'
});

circles[i].on('mousemove', {value: data[i]}, function() {
    console.log('need to use value for this particular event here');
});

shapesLayer.add(circles[i]);
}
4

2 に答える 2

0

ありがとう@アニ。質問を投稿したとき、オブジェクトにプロパティを「注入」して、そのようにアクセスできるのではないかと考えました。あなたの方法はコーディング標準よりも優れていますが、以下はその粗雑なものでも機能します:

circles[i].value = data[i];

circles[i].on('mouseover', function() {
    console.log(this.value);
});
于 2013-08-14T20:57:31.317 に答える