메뉴관련 예제를 정리하고  마지막으로 총정리 해봅니다. 

CCMenu  클래스 설명입니다. 

/** A CCMenu
 * 
 * Features and Limitation:
 *  - You can add MenuItem objects in runtime using addChild:
 *  - But the only accecpted children are MenuItem objects
 */
 


특징과 제한 
- CCMenuItem 인스턴스를 넣고 싶은때 언제나 멤버로 넣을수 있다 .
- 다만. CCMenuItem 이나 이를 상속한 클래스만 을 넣을수 있다 .

그럼 이제 CCMenuItem에는 어떤것들이 있나 보겟습니다. 
총 6개가 아래와  같이 있습니다. 

CCMenuItemAtlasFont

CCMenuItemFont

CCMenuItemImage

CCMenuItemLabel

CCMenuItemSprite

CCMenuItemToggle


위에 이놈들은 직접적이든 간접적이든 CCMenuItem을 상속 받았습니다. 
다만 요놈들끼리도 상속 구조를 이루는 부분들이 있는데 확인해보게습니다.



일단 CCMenuItem을 사용처에따라 분류해봅니다. 

1.이미지 메뉴아이템을 만들때 :
CCMenuItemSplite 을 사용하세요  
그리고 좀더 편하게 사용한다면 
CCMenuitemImage 를 사용하세요( 파일 이름으로 바로 생성가능 - 관련 강좌 클릭)
 

2.글자 메뉴아이템을 만들때
:
CCMenuItemLable를 사용하세요
그러나 다른 폰트및 사용자 폰트를 사용하려면 
CCMenuitemFont 와 CCMenuItemAtlasFont 를 사용하세요 
CCMenuitemFont는 디바이스 내장 폰트 사용하고 
CCMenuItemAtlasFont 사용자 폰트를 사용합니다. 
(
CCMenuItemLable 을 이용하여 사용자 폰트도 만들수 있지만. 개인적인 생각으로 는 분명 특화된 클래스가 있는데 그걸 사용하지않고 다른걸 기본클래스를 사용한다는 것은 시간낭비적
요소가 있지 않나 싶습니다.물론 세부적인 컨트롤이 가능하다는 측면이 있지만 그런일은 별로
없을듯 합니다. )



3.메뉴아이템을에 여러가지 상태값을 넣고 변경하고자 한다면 

CCMenuItemToggle을 사용하세요 



위 관련내용중 CCMenuItemSplite와 CCMenuItemImage를 제외하고 
다른 메뉴아이템은 클릭시에 기본액션은 글자확대=>복귀 이 있습니다. 


진짜 상세히는 못다루었지만. 이제 어떤메뉴라도 충분히 다룰수 있지 않았나 합니다. 
지금까지 전체 MenuTest관련 5강좌를 전부 읽고도 
메뉴를 만들지 못하신다면 문의 주세요 만들어 드립니다. ㅎㅎㅎ
 
 
 

 




 
Posted by 수다쟁이증후군 :

자자 거의 다와 가네요

이전 시간에는               

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 수다쟁이증후군 :