-1
マウスイベントでベジエ曲線を描きたい。マウスイベントのベジエ曲線
function draw(selection)
{
var keep = false, path, xy0;
line = d3.svg.line()
.interpolate(function(points) {return points.join("M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80"); })
.x(function(d) {return d[0];})
.y(function(d) {return d[1];});
selection
.on('mousedown', function() {
keep = true;
xy0 = d3.mouse(this);
path = d3.select('svg')
.append('path')
.attr('d', line([xy0, xy0]))
.style({'stroke': 'black', 'stroke-width': '3px'});
})
.on('mouseup', function() {
keep = false;
})
.on('mousemove', function(){
if(keep) {
Line = line([xy0, d3.mouse(this).map(function(x) {return x - 1;})]);
console.log(Line);
path.attr('points', Line);
}
});
}
しかし、動作しません。それをどうやって行うのか考えていますか?
ありがとうございます。
正確に何をしようとしていますか?この行 'points.join(" M10 80 C 40 10、65 10、95 80 S 150 150、180 80 ");はほとんど意味がありません。ボタンをクリックしてmousemove上でマウスの位置と現在の位置の間にカーブを描きたいのですか? – Mark
マウスの位置と現在の位置の間にベジェ曲線を描きたい。 M10 80 C 40 10、65 10、95 80 S 150 150、180 80はベジェ曲線パラメータである。これを私のコードにどのように実装できますか?ありがとう – zoint
「*しかしそれは動作しません」*は問題文ではなく、あなたが書いたとおりにコードを実行しており、ソースコードと同じように機能します。 **このコードは何を期待していましたか?代わりに何をしているのですか?その違いはどこから来ていると思いますか。*それを修正するためにこれまでに何を試しましたか? –