자자 거의 다와 가네요

이전 시간에는               

1.CCMenuItem 할 때 크기를 따로 지정한다
 item1.setScaleX(1.5f);

2.CCMenu 수직 수평 정렬할때 padding값을 주어서 간격을 
 조절한다. 

 
menu.alignItemsVertically(40);

 menu.alignItemsHorizontally(40);    

요거했네요 진짜 별거 없없죠 ㅎ
이번엔느 Layer3를 해보죠 이번에는 좀더 건질것이 많이 있기를 바라면서
전체 소스 한번 볼까요?

        

아 실망 스럽게도 메뉴 관련해서는 특이할만게 별로없고 다만 Action에 관한것 밖에 없에요 .            
두번째 강좌에서 이미  봤던내용의 반복입니다. 
CCAction 부분도 
기본개념 강좌 2
번째 강좌에서 다루었던내용이고  머 . .


CCJumpBy에대해서 상세하게 다루지 않았기에 간단히 정리 해봅시다.

CCIntervalAction jump = CCJumpBy.action(3.0f, CGPoint.ccp(400,0), 50, 4);

item2.runAction(                CCRepeatForever.action(CCSequence.actions(jump, jump.reverse())));
첫번째 파라미터는 시간
두번째 파라미터는 얼마만큼 이동할것 인가?
세번째 파라미터는 점프을 얼마만큼?
네번째 파라미터는 시간내에 몇번을 점프할것인가?
입니다. 

그리고 CCMenuItem 의 액션을 시행하는데
미리 지정한 점프액션과 그에 대한 역액션을 순서대로 무한반복해라 입니다.
진짜 별거 없죠 ㅎㅎ. 

콜백에서 참고할만 것이 있는가 보니 

disabledItem.setIsEnabled(!disabledItem.isEnabled());
disabledItem.stopAllActions(); 

요고 있네요 .
MenuItem 비 활성화와
해당 MenuItem의 액션을 정지 시키기
입니다.



그럼 Layer4로 바로 갈께요 .  아래는 전체 소스 보기 입니다.
 

오호 라 새로운것 하나 나왔습니다. 

바로 CCMenuItemToggle 입니다.  자자 가볼까요 ?
토글 말그대로 입니다. 2가지의 상태변화 입니다. 
A => B , B => A
입니다.  
CCMenuItemToggle item1 = CCMenuItemToggle.item(this,                                       "menuCallback",

                          CCMenuItemFont.item("On"),
                          CCMenuItemFont.item("Off")};
별거 없죠 
첫번째 파라미터 타겟 CCNode
두번째 파라미터는 콜백함수 
세번째와 네번째는 상태변화 될  MenuItem 입니다. 
상태변화도리 MenuItem은 몇개든지 추가 될수 있습니다. 

CCMenuItemToggle item1 = CCMenuItemToggle.item(this,                                       "menuCallback",

                          CCMenuItemFont.item("On"),
                          CCMenuItemFont.item("Off"),
                          CCMenuItemFont.item("On1"),
                          CCMenuItemFont.item("On2"),
                          CCMenuItemFont.item("On3"),
                          CCMenuItemFont.item("On4"),
                          CCMenuItemFont.item("On5"),
                          CCMenuItemFont.item("On6"),
                          CCMenuItemFont.item("On7"),
                          CCMenuItemFont.item("On8"),
                          CCMenuItemFont.item("On9")
};
이렇게 말이죠 메뉴아이템은 콜백과 별도로
상태변화MenuItem들을 순차적으로 변화시켜줍니다. 맨 끝으로 변화 되면 다시 첫번째가 나타납니다. 한마디로 루프죠 . 

다르게 추가 하는방법은
바로 아래에 나오는데요.
CCMenuItemToggle item4 = CCMenuItemToggle.item(this, "menuCallback", CCMenuItemFont.item("Off")); 

ArrayList<CCMenuItemFont> more_items = new ArrayList<CCMenuItemFont>();

            more_items.add(CCMenuItemFont.item("33%"));

            more_items.add(CCMenuItemFont.item("66%"));

            more_items.add(CCMenuItemFont.item("100%"));
item4.getSubItemsRef().addAll(more_items); 

ArrayList에 추가 해서 한번에 할당하기 입니다.간단하죠 .

한가지 추가로 MenuItemToggle이 첫번째 로딩될때 나올 순서를 미리 정할수 도 있는데 그건 아래와 같습니다.  
item4.setSelectedIndex(2);
이로써 기본적인것은 되었구요 . 

하나 재미난것이 있던데 메뉴 정리할때

CCMenu menu = CCMenu.menu(title1, title2, item1, item2, title3, title4, item3, item4, back); // 9 items.

menu.alignItemsInColumns(new int[]{2, 2, 2, 2, 1}); 

첫번째 라인에 순서대로 2개배치하고
2번째 라인에 그다음 2개를 배치하고
3번째 라인에 그다음 2개를 배치하고 
....

마지막은 1개를 배치합니다. 
이런식으로 배치합니다.  

다됐네요
메뉴관련해서는 별다른 내용이 없네요 다만 MenuItem의 선언부분만 잘체크한다면 별다른 어려움없이 정리 될듯합니다.

이로써 한개의 예제를 끝냈는데요 아직 저도 미숙하고 글적는 솜씨도 부족해서
의도가 잘전달 안됐을것도 같네요 .
다음 예제는 이번에 글적으면서 부족했던점을 좀더 보완하여 체계적으로 적어도록
노력하겟습니다. 다음 강좌도 많이 봐주세요  






 

              

                

                   

Posted by 수다쟁이증후군 :