coolsharp의 놀이터

cocos2d for android - 곡선

2011. 10. 18. 18:51 : 개발
    /**
    * 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";
        }
    }
Posted by coolsharp