1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
function update (sentence) { let sentences = sentence.split('') let keys = {}, times let data = sentences.map(item => { times = keys[item] || 0 times++ keys[item] = times return {key: `${item}${times}`, value: item} }) let texts = g.selectAll('text').data(data, d => d.key) texts.attr('class', 'update') .transition() .duration(animationTime) .attr('x', (d, i) => i * cw) texts.enter().append('text') .attr('class', 'enter') .attr('y', -60) .text(d => d.value) .style('fill-opacity', 1e-6) .attr('x', (d, i) => i * cw) .transition() .duration(animationTime) .style('fill-opacity', 1) .attr('y', 0) texts.exit() .attr('class', 'exit') .transition() .duration(animationTime) .attr('y', 60) .style('fill-opacity', 1e-6) .remove() }
|