d3에서 애니메이션 내에 애니메이션을 넣어보자.
animation 내에 애니메이션 넣기.
- 그냥, 애니메이션 내에 새로운 애니메이션을 또 넣어서 진행해도 되는지 알아봅니다.
- 귀찮으니 그냥 코드를 그대로 넣어볼게요.
do it.
- 그냥 같은 형식의 코드를 그대로 넣어주면 잘 굴러갑니다.
<html>
<head>
<script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>
<span id="ccc"></span>
<div>
<svg id="aaa" width="1000px" height="600px">
</svg>
</div>
</body>
<script>
d3.select("#aaa")
.append("circle")
.attr("id", "bbb")
.attr("cx", 500).attr("cy", 300)
.attr("r", 20)
.attr("fill", "red")
.attr("stroke", "blue")
.attr("stroke-width", 10)
var r_lst = [100,6,70,20, 3, 10, 9]
var i = 0;
frame_duration = 3000
// animation
d3.interval(
function(){
if(i > r_lst.length){
this.stop();
}else{
var r_added = r_lst[i]
// 값에 따라서 frame의 간격을 조절합니다.
var each_frame_duration = frame_duration/r_added
var j=0;
// nested animation
d3.interval(
function(){
if(j>r_added){
this.stop();
}else{
d3.select("#bbb")
.attr("r", d3.select("#bbb").attr("r") * 1.0 + 1)
}
j=j+1
},
each_frame_duration
)
d3.select("#ccc").text(i);
}
i=i+1;
}, frame_duration
)
</script>
</html>
wrap-up
- 참 쉽죠 하하하.
댓글남기기