Я все еще участвую в программе, и в настоящее время я тестирую библиотеку d3.Анимационный путь (линия) от последней известной точки до новой добавленной точки (d3)
До сих пор я доволен результатом. fiddle
Вопрос: Если вы отметите ссылку (или часть кода по этому вопросу), вы должны попытаться построить точку. Это возможно только для тиков x-axis. Вы увидите, что он оживляет, но это не совсем то, что я хочу. Я просто хочу, чтобы он оживил новую добавленную строку. Я проверил .enter() и .append(), но я получал ошибки. Возможно, я ошибаюсь.
function lines(x, y) {
this.x = x;
this.y = y+h;
}
var lineArray = [{x: 0, y: h}, {x: 1, y: h}];
var lineArrayPrevious = lineArray[lineArray.length -1].x;
var d3line = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("monotone");
var path = svg.append("path").attr("d", d3line(lineArray)).attr("class", "line");
canPlot = true;
function plot() {
var m = d3.mouse(this);
if (m[0]-20 > lineArray[lineArray.length - 1].x) {
var lineX = lineArray.push(new lines(m[0], m[1]));
svg.selectAll("path")
.data(lineArray)
.attr("d", d3line(lineArray));
var point = svg.append("circle")
.attr("cx", function(d, i) { return m[0]; })
.attr("cy", function(d, i) { return m[1]+h; })
.attr("r", 0).transition().delay(150).attr("r", 6);
var totalLength = path.node().getTotalLength();
console.log();
path.attr("stroke-dasharray", totalLength + " " + totalLength)
.attr("stroke-dashoffset", totalLength)
.transition().duration(700).ease("linear").attr("stroke-dashoffset", 0).delay(200);
canPlot = true;
} else { console.log("error"); canPlot = false; }
}
Извините за мой плохой код, я учусь и в конце концов его очищу.
Q2: Как трудно было бы сделать круг, который следует за y-позицией мыши и перемещается по клещам, когда вы приближаетесь к одному?
Q3: Если мы решаем свой первый вопрос, было бы легко получить строки для анимации/обновления автоматически, когда мы зададим вопрос 2?
Заранее спасибо.
Для Q1 - http://stackoverflow.com/questions/20318833/ in-d3-js-is-a-way-to-add-on-a-line-one-point-at-time-using-d3-trans/20319506 –
Ваша скрипка не кажется работать на меня. Как вы строите точку? –
@LarsKotthoff вы можете рисовать только на серых линиях. Спасибо за проверку. – 6olden