나는 곡선 경로를 따라 경로 (실제로는 경로 집합이지만 그 부분에 대해 알아 보겠습니다.)를 움직이려합니다.raphaelJS 2.1 경로를 따라 애니메이션 적용
RaphaelJS 2는 animateAlong
메서드를 제거했습니다. 이유는 알 수 없기 때문입니다. 라파엘 문서의 gears demoZevan에 의해 추상화로 파고, 나는 여기까지 가지고있다 :
//adding a custom attribute to Raphael
(function() {
Raphael.fn.addGuides = function() {
this.ca.guide = function(g) {
return {
guide: g
};
};
this.ca.along = function(percent) {
var g = this.attr("guide");
var len = g.getTotalLength();
var point = g.getPointAtLength(percent * len);
var t = {
transform: "t" + [point.x, point.y]
};
return t;
};
};
})();
var paper = Raphael("container", 600, 600);
paper.addGuides();
// the paths
var circ1 = paper.circle(50, 150, 40);
var circ2 = paper.circle(150, 150, 40);
var circ3 = paper.circle(250, 150, 40);
var circ4 = paper.circle(350, 150, 40);
var arc1 = paper.path("M179,204c22.667-7,37,5,38,9").attr({'stroke-width': '2', 'stroke': 'red'});
// the animation
// works but not at the right place
circ3.attr({guide : arc1, along : 1})
.animate({along : 0}, 2000, "linear");
내가 세 번째 원은 빨간색 경로를 따라 애니메이션을 적용 할.
이제는에 애니메이션이 적용되지만 빨간색 경로에서 세 번째 원의 원래 좌표와 동일한 거리에 있습니다. 이상한 일은
along
객체의 변형
translate
이 상대 (소문자 "t") 또는 절대 (대문자 "T")인지 여부에 관계없이 발생합니다.
animate
호출 직전에 변환 변환을 사용하여 해당 부분을 조금이라도 움직여도 동일한 지점에서 항상 움직입니다.
도움이 매우 감사합니다. 방금 벡터 대륙에서 보트에서 내려 왔어. 포인터가 도움이됩니다. 작동하는 바이올린이 더 좋습니다.
브릴리언트, 케빈. 아주 간단합니다. 감사! 한 가지 : 변환에 "..."''append' /'prepend' 구문을 설명 할 수 있습니까? 문서는 거의 속삭임없이 이것을 건너 뜁니다. 나는 그것이 무엇을위한 것인지 정말로 말할 수 없다. – Ben
Raphael의 참고 자료는 심각한 정밀 검사가 필요하지 않습니다. append/prepend는 특히 다른 위치에서 개별적으로 변형 될 수있는 경로를 처리 할 때 매우 유용합니다. 근본적으로, 다른 변형들을 닦지 않고 기존 변형 체인에 특정 변형을 삽입 할 수 있습니다. 예를 들어 이미 "R45 0,0 S2,2"의 변형이있는 요소가있는 경우 "T100,100 ..."을 붙이면 "T100,100 R45 0,0 S2"의 누적 변환이 발생합니다. 2 "로 설정하고 추가하면"R45 0,0 S2,0 T100,100 "이됩니다 - 다른 결과. –
훌륭합니다, 감사합니다. 그래, 나는 드미트리가 지난 주 트위터에 자랑스러워하면서 라파엘에 관한 책을 쓰려면 두 건의 제안을 거절했다. "쓰고 싶지 않다". 그 책을 써야 할까? 나는 사본을 살 것이다 :) – Ben