* - 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강좌를 전부 읽고도
메뉴를 만들지 못하신다면 문의 주세요 만들어 드립니다. ㅎㅎㅎ
바로 CCMenuItemToggle입니다. 자자 가볼까요 ?
토글 말그대로 입니다. 2가지의 상태변화 입니다.
A => B , B => A
입니다. CCMenuItemToggle item1 =
CCMenuItemToggle.item(this, "menuCallback",
CCMenuItemFont.item("On"), CCMenuItemFont.item("Off")};
별거 없죠
첫번째 파라미터 타겟 CCNode
두번째 파라미터는 콜백함수
세번째와 네번째는 상태변화 될 MenuItem 입니다.
상태변화도리 MenuItem은 몇개든지 추가 될수 있습니다.
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>();