cocos2d for android - 곡선
/**
* FileName : ActionsTest.java
* Comment : 베이지 곡선 그리기
* @version : 1.0
* @author : coolsharp
* @date : 2011. 10. 18.
*/
static class ActionBezier extends ActionDemo {
public void onEnter() {
super.onEnter();
// 윈도우 크기 얻기
CGSize s = CCDirector.sharedDirector().winSize();
// sprite 1
// Bezier 설정 객체 생성
// http://en.wikipedia.org/wiki/User_talk:Twirlip 그림 3번 항목 참조
// 그림에 보면 P0, P1, P2, P3가 있음
// 현재 위치가 P0, controlPoint_1가 P1, controlPoint_2가 P2, endPosition가 P3
CCBezierConfig bezier = new CCBezierConfig();
// 첫번째 포인트 지정
bezier.controlPoint_1 = CGPoint.ccp(0, s.height / 2);
// 두번째 포인트 지정
bezier.controlPoint_2 = CGPoint.ccp(300, -s.height / 2);
// 종점 포인트 지정
bezier.endPosition = CGPoint.ccp(300, 100);
// Bezier 객체 생성
// 3초간 위 설정대로 진행
CCBezierBy bezierForward = CCBezierBy.action(3, bezier);
// 역 방향 진행
CCBezierBy bezierBack = bezierForward.reverse();
// 액션 시퀀스 생성
CCSequence seq = CCSequence.actions(bezierForward, bezierBack);
// 무판 반복 rep 생성
CCRepeatForever rep = CCRepeatForever.action(seq);
// sprite 2
// 현재 위치 지정
tamara.setPosition(CGPoint.ccp(200, 160));
CCBezierConfig bezier2 = new CCBezierConfig();
bezier2.controlPoint_1 = CGPoint.ccp(100, s.height / 2);
bezier2.controlPoint_2 = CGPoint.ccp(200, -s.height / 2);
bezier2.endPosition = CGPoint.ccp(240, 160);
CCBezierTo bezierTo1 = CCBezierTo.action(2, bezier2);
// sprite 3
kathia.setPosition(CGPoint.ccp(400, 160));
CCBezierTo bezierTo2 = CCBezierTo.action(2, bezier2);
grossini.runAction(rep);
tamara.runAction(bezierTo1);
kathia.runAction(bezierTo2);
}
public String title() {
return "BezierBy / BezierTo";
}
}
댓글
댓글 쓰기