2014-03-04 4 views
0

pictureAS3 곡선 애니메이션

그림과 같이 곡선의 애니메이션을 as3로 만들고 싶습니다. 그러나 나는 이것을 어떻게하는지 모른다.

api 및 curveTo 메소드를 그리면 애니메이션의 첫 번째 그림과 마지막 그림을 만들 수 있습니다. 하지만 그 사이에 어떻게 이미지를 할 줄 몰라! 사진에

첫 번째 곡선 :

line.graphics.moveTo(10, 200); 
line.graphics.lineStyle(15); 
line.graphics.curveTo(210,0,410, 200); 

나는 그림 편집기에서 사이 무승부 상태를 tryed.

그리기 API를 사용하여 상태를 만들 수있는 방법이 있습니까?

어떤 조언을 주셔서 감사합니다.

+0

마음에 드시면 애니메이션에 시간과 타이머 또는 ENTER_FRAME이 필요합니다. 복잡한 커브의 경우 시작 및 끝점으로 2 개의 점을 이동해야하며, 예를 들어 베 지어 경로를 미리 정의하는 규칙과 경로상의 점을 찾기위한 도우미 메서드가 필요합니다. –

+0

예제 이미지의 선과 같은 이음새는 사인 커브를 따르고 있습니다! 포인트를 얻기 위해 이것을 사용할 수 없습니까? ;) – chadiik

답변

2

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)); 
}