Post

bool onTouchBegan(Touch* touch, Event* unused_event);

분명히 onTouchBegan 함수를 헤더에 선언했는데

빌드만 하면 에 멤버함수가 없습니다가 떠서 한 20분동안 미치는 줄 알았다.

확인해보니 함수 인자를 삭제하면 아예 에러가 안뜸.

그래서 Touch* touch, Event* unused_event 인자를 설마 다른 cocos::Touch가 아닌 다른 걸로 찾나 싶어서

네임스페이스를 명확하게 적어줬다.

bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* unused_event);

그러니까 에러 해결!

근데 내가 요근래 내 블로그로 타고들어오는 검색결과를 유심히 봤는데

cocos2dx에 관련해서 단 하나도 없어 ㅋㅋㅋㅋㅋ큐ㅠㅠㅠ 아이고 슬프다...

아 그리고 스케쥴 관련해서 함수가 아예 삭제되었길래 그냥 코코스3 씀

bool onTouchBegan(Touch* touch, Event* unused_event); 오버로드 된 멤버함수가 없습니다

Post

cocos2d-x Text

auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24, Size(100, 50), TextHAlignment::LEFT);

Size(100, 50)은 폰트가 출력될 상자의 크기라고 생각하면 된다.

100은 너비, 50은 높이다.

만약 너비보다 글자가 더 길다면 다음줄로 글자가 분리된다.

테스트해보니까 띄어쓰기를 기준으로 한단어로 치부해 다음줄로 이동시킨다.

높이도 마찬가지. 높이가 모자라면 글자는 잘리거나 보이지 않는다.

TextHAlignment::LEFT는 글자를 왼쪽 정렬한다.

TextVAlignment는 상하를 정렬한다. 글자가 너무 길어서 잘리는 경우에는

TextVAlignment::TOP일 경우엔 위쪽 텍스트만, TextVAlignment::BOTTOM일 때는 마지막 테스트만 보여준다.

기본값이 TextVAlignment::TOP 인 듯하다.

cocos2d-x Text 폰트, 색, 글자 변경

label->setTextColor(Color4B(255, 150, 150, 255));
label->setString("New Test!");
label->setAnchorPoint(Vec2(0, 0));
label->enableBold();
label->enableShadow(Color4B(255, 250, 250, 255), Size(10, 10), 90);
label->enableOutline(Color4B(255, 0, 0, 255), 10);
//label->disableEffect();

 

label의 Anchor는 0.5, 0.5이다.

label->enableBold()로 글자를 두껍게 만들 수 있다. 그런데 내가 글자에 색상을 지정한 후 bold효과를 주니

bold효과가 있는 곳은 하얀색으로 표시가 되었다;;; 음 이런것도 고쳐야 하는건가;;;

enableShadow(Color4B(255, 250, 250, 255), Size(10, 10), 90) 의 인수는 그림자의 색상, 그림자의 위치, 마지막은 흐림범위 인것 같은데 테스트해봐도 변동이 없어서 뭔지 모르겠다.

enableOutline(Color4B(255, 0, 0, 255), 10)은 글자 외곽선 효과이다. ttf 폰트만 가능하고 첫번째 인자는 외곽색깔이라고 두번째 인자는 두께이다.

 disableEffect()는 모든 효과를 삭제한다. 볼드나 그림자, 윤곽선 등... 글자 색상은 그대로 놔둔다.

cocos2d-x 한글출력

한글 폰트를 font 폴더에 넣어주고 헤더에 아래 전처리기 추가

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#pragma execution_character_set("utf-8")
#endif

 

Post

cocos2d-x에서 에러나는 것들 수정한 기록

cocos2d-x 에러 수정하기

 

1. Image 안불러와지는 에러.

내 첫번째 test프로젝트가 image를 분명히 추가했는데 찾지를 못하는 에러가 발생했다.

지금보니까 2번 에러 때문인듯. 아무튼 프로젝트 꼬인거 같아서 삭제하고 새로 프로젝트 만듬.

2. CC_FORMAT_PRINTF 에러

내가 넣은 image를 처음에는 잘 불러왔는데 이것저것 테스트를 하다보니 에러가 뜨더니 안된다???

찾아보니 오류 목록 뜨는 하단 창에 빌드전용+inteliSence라고 박스가 있는데 그걸 빌드 전용으로 바꿔주면 된다고 한다.

그러니까 에러는 사라졌는데 여전히 이미지는 바뀐이미지가 적용이 안됨...왜죠?

3. Image 추가 및 그리기

뭔지 모르겠는데 한번 Resources에 추가한 Image는 삭제해도 프로젝트 상에 그대로 남아있다.

그 일례로 Resources 폴더에서 이미지를 삭제하기도 했는데 계속 읽어서 그림을 그림.

그 때문에 a라는 이미지는 평생 a라는 이미지이고, 다른 이미지를 a라고 바꿔도 그 이미지가 안불러와짐;;;

(이건 좀 크리티컬한데;;;)

이부분은 cocos2d Image 사용법을 한번 봐야할 것 같다.

아무튼 Images/TestImage3.png 위치에 이미지를 추가하면 잘 불러와진다.

auto sprite3 = Sprite::create("Images/TestImage3.png");
if (sprite3 == nullptr) {
 	problemLoading("'Images/TestImage3.png'");
}
else {
	sprite3->setAnchorPoint(Vec2(0, 0));
    sprite3->setPosition(Vec2(0, 0));
    this->addChild(sprite3, 0);
}

 

▲ top