이것이 어떤 수의 서클로 확장 될 수 있다고 가정 할 때, 나는 당신이 사용하고있는 것과 비슷한 setTimeout과 루프를 사용할 것입니다.
애니메이션을 루프에서 작동 시키려면 애니메이션이 나중에 실행될 때 참조 할 원이 무엇인지 알 수 있도록 '클로저'를 사용해야합니다 (그렇지 않으면 마지막 객체를 움직일 수 있습니다).
(function() {})() (직접 모드라고 함)의 함수 형식을 사용하면 함수 범위 내에서 변수가 캡처되므로 나중에 변수가 정확합니다.
jsfiddle
당신이 처음에 모든 원을 원하지 않는 경우
for(var i=1; i<10; i++) {
(function() { // start closure with functional scope
var circle = paper.circle(width*0.4, height*0.2, 10*i);
setTimeout(function() { circle.animate({transform: "T0,100"}, 2000); }, (i-1) * 2000 )
})();
}
, 당신은 여전히 (우리는 함수가 명확하게하기 위해 C에 할당 할) 인덱스 난을 캡처하는 폐쇄가 필요합니다.
for(var i=1; i<10; i++) {
(function() { // start functional scope
var c = i; // c is now tied to this scope
setTimeout(function() {
var circle = paper.circle(width*0.4, height*0.2, 10*c);
circle.animate({transform: "T0,100"}, 2000);
}, (c-1) * 2000 )
})();
}
jsfiddle
예
나는 여기에 애니메이션 객체를 생성 할 필요가있다 모르겠지만, 당신이 원한다면, 워드 프로세서는
here
같은 예입니다,하지만 라파엘를 사용하여. 생기.
var animation = Raphael.animation({transform: "T0,100"}, 2000)
for(var i=1; i<10; i++) {
(function() {
var c = i;
setTimeout(function() {
var circle = paper.circle(width*0.4, height*0.2, 10*c);
circle.animate(animation);
}, (c-1) * 2000 )
})();
}
jsfiddle
출처
2017-04-21 12:53:34
Ian
당신은 애니메이션이 임의의 시간에 시작 하시겠습니까? (이 경우에는 setTimeout을 사용하여 애니메이션을 적용하는 함수를 호출합니다.) 또는 이전 애니메이션이 완료된 후 (애니메이션의 콜백 매개 변수를 사용하는 경우). – Ian
먼저 그 안쪽 원이 나타나기를 바랍니다. 두 번째 서클 이후 (예 : 1 초 후) 다음 세 번째 동그라미. – beub
내가 움직이게하는 경우 : 애니메이션 개체를 만드는 방법 (문서를 찾을 수있는 곳)? – beub