ENTER_FRAME
을 사용하여 언급 한 @ NicolasSiver은이 유형의 작업을 수행 할 때 확실히 선택 사항입니다. @Chadyk 언급 한 커브는 사인 커브처럼 보입니다. 당신은 곡선 반경, 위치, 크기 등을 조절할 수 있도록
설정 몇 가지 변수를 : 그래서 하나의 방법은 몇 가지 유연한 조정이 구현할 수
private var origin:Point;
private var degree:int;
private var curveSize:int = 25; //radius
private var curveLength:int = 200;
는 그런 다음 ENTER_FRAME
로 설정 :
:
//set the origin to whatever you like, i'm choosing the center from the center of the curve
origin = new Point(stage.stageWidth/2 - curveLength/2, stage.stageHeight/2);
//create our sprite
sprite = new Sprite();
sprite.graphics.lineStyle(2, 0xFF0000);
sprite.graphics.moveTo(origin.x, origin.y);
addChild(sprite);
//add the listener
addEventListener(Event.ENTER_FRAME, drawCurve);
그런 다음 우리가, 정도/회전을 증가 y 위치에 대한 해결의 기본 삼각 함수를 적용하고,이 x 축을 따라 이동 우리의 기원을 따를 것이다, 정직하고 귀엽다
public function drawCurve(e:Event):void {
if (origin.x >= origin.x + curveLength) {
removeEventListener(Event.ENTER_FRAME, drawCurve);
return;
}
degree += 2;
sprite.graphics.lineTo(++origin.x, origin.y + curveSize * Math.sin(degree * Math.PI/180));
}
마음에 드시면 애니메이션에 시간과 타이머 또는 ENTER_FRAME이 필요합니다. 복잡한 커브의 경우 시작 및 끝점으로 2 개의 점을 이동해야하며, 예를 들어 베 지어 경로를 미리 정의하는 규칙과 경로상의 점을 찾기위한 도우미 메서드가 필요합니다. –
예제 이미지의 선과 같은 이음새는 사인 커브를 따르고 있습니다! 포인트를 얻기 위해 이것을 사용할 수 없습니까? ;) – chadiik