반응형

Label을 쓰다보면 같은 크기내에 텍스트를 더 많이 노출 시켜야 할 때도 있습니다.

Label의 크기를 지정하면 자동 줄바꿈이 되기도 하지만 게임에서 일정 부분에만 노출되어야 하는 텍스트들도 존재합니다.

그래서 Label의 폰트 크기를 50으로 사용했다가 텍스트가 Label의 크기를 넘어갈 때는 폰트 사이즈를 40으로 변경해야 합니다.


Label안에 당연히 setFontSize 같은 함수가 있을 줄 알았는데...

아무리 찾아봐도 안보이내요. ㅠ_ㅠ


cocos2d-x 2.x 버전에서는 setFontSize(float size) 함수가 있어서 편했는데 

cocos2d-x 3.x 와서 없어진듯 ㅠㅠ


조금은 불편하지만 방법은 있습니다.


<Label 폰트 사이즈 변경 방법>

1
2
3
4
5
6
7
8
9
10
11
12
// 폰트 크기 48 Label 생성.    
auto label = Label::createWithTTF("Test Font Size""NanumGothic.ttf"48);     
   
// TTF폰트 정보 가져오기.    
TTFConfig config = m_labelNumber->getTTFConfig();   
     
// 원하는 폰트 사이즈로 변경.    
config.fontSize = 38;       
 
// 변경한 폰트 정보를 다시 입력.    
label->setTTFConfig(config);
 



cs


폰트 크기를 정해놓고 줄이는 방법도 있지만

크기에 맞게 폰트사이즈를 조절 할 수 있다면 얼마나 좋을까요?

아직 cocos2d-x에는 기능이 없는것 같습니다.

없으면 만들면 돼죠^^;;


그래서 간단하게 자동 폰트 사이즈  변경하는 방법을 만들어 봤습니다.

그렇게 효율적인 방법은 아니지만 간단하게 사용 가능 합니다.

(더 효율적인 방법이 있으면 알려주세요 ㅠ_ㅠ)


<Label 폰트 사이즈 자동 조절>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
    // label을 생성.
    auto label = Label::createWithTTF("Test Font Size""NanumGothic.ttf"48);
 
    // TTF폰트 정보 가져오기.
    TTFConfig config = m_labelNumber->getTTFConfig();
 
    // label의 Width가 96보다 작을 때까지 반복.
    while (label->getContentSize().width > 96.f)
    {
        // 현재 label의 크기가 96보다 크다면 폰트사이즈를 1 줄인다.
        config.fontSize = --config.fontSize;
        
        // 폰트 사이즈가 1보다 작으면 끝냄.
        if (config.fontSize < 1break;
        
        // 폰트 사이즈를 줄이고 TTF설정을 저장.
        label->setTTFConfig(config);
    }
cs



위 처럼 해주면 label의 Width 크기가 96보다 작을 때까지 폰트사이즈를 줄입니다.

너무 많은 텍스트를 넣으면 1보다 작아져 안되겠지만...


숫자 2~4자리 정도 가변적으로 폰트사이즈를 조절해야할 경우 유용하게 사용할 수 있습니다.




반응형

+ Recent posts