메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

cocos2d와 달리,

윈도우 환경에서 cocos2d-x 프로그램을 짜보면

상속을 받았음에도 update, ccTouchesBegan 등의 함수가 작동되지 않음을 알 수 있다.


터치 해결법:

OnEnter와 OnExit를 추가하고,

다음 같이 적어준다.


void HelloWorld::onEnter()

{

//단일 터치일 때. ccTouchBegan을 활성화 시켜준다.

    //CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true); 


//다중 터치일 때. ccTouchesBegan을 활성화 시켜준다.

CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this, 0);


CCLayer::onEnter();

}


void HelloWorld::onExit()

{

CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);

CCLayer::onExit();

}


이렇게 한 뒤, 터치 처리 부분에 브레이크 포인트를 걸어보면 정상적으로 작동된다는 걸 알 수 있다.


update를 작동하게 하려면, 스케쥴러를 등록해줘야 한다.

CCScene* HelloWorld::scene()
{
    CCScene * scene = NULL;
    do 
    {
        // 'scene' is an autorelease object
        scene = CCScene::node();
        CC_BREAK_IF(! scene);

        // 'layer' is an autorelease object
        HelloWorld *layer = HelloWorld::node();
        CC_BREAK_IF(! layer);

        // add layer as a child to scene
        scene->addChild(layer);

layer->schedule(schedule_selector(HelloWorld::update));
    } while (0);

    // return the scene
    return scene;
}

빨간 색으로 된 부분. 이것을 추가해줘야 update가 프레임별로 발생한다.

근데, 굳이 이렇게 작동하게 할 거면 상속은 도대체 무슨 의미가 있는가 의문이 든다...
사실 다른 함수 만들고 저기에 등록해도 update와 같은 역할을 한다.

태그 :
조회 수 :
10656
등록일 :
2011.10.27
07:53:38 (*.140.69.47)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=385031
List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜 최근 수정일
10 cocos2d-x 2.2.2 윈도우 환경 기본 메모리 누수 똥똥배 640   2014-03-10 2014-03-11 03:51
cocos2d-x 2.2.2를 윈도우에서 실행시키고 나서 종료하면 기본으로 4바이트의 메모리 누수가 발생한다. 이건 CCScriptEngineManager가 원인인데 CCObject들은 delete를 실행할 때마다 CCScriptEngineManager의 sharedManager를 호출하기 때문이다. 결국 모든 C...  
9 cocos2d-x 2.2.2 UILabelBMFont 메모리 누수 해결법 [2] 똥똥배 783   2014-03-10 2014-05-31 19:30
만약 CocoStudio로 UI를 만든 후 GUIReader를 써서 지정 폰트를 불러오면 엔진 버그로 인해서 메모리 누수가 생긴다. 이걸 고치려면 LabelBMFont.cpp를 아래와 같이 수정해야 한다. void LabelBMFont::setFntFile(const char *fileName) { if (!fileName || st...  
8 Cocostudio의 ActionNode 메모리 누수 해결법(cocos2d-x 2.2.2) [2] 똥똥배 776   2014-03-09 2014-05-31 19:26
Cocostudio로 액션을 만들고 액션매니저를 이용해서 ActionManager::shareManager()->playActionByName 아래와 같이 실행을 해주면 액션이 실행되는 경우 메모리 누수가 발생한다. (액션을 실행하지 않았을 때는 메모리 누수 없음) 이 메모리 누수를 없애려면 ...  
7 cocos2d-x CCMenuItem 자신을 지웠을 때 생기는 에러 똥똥배 442   2013-09-13 2013-09-13 07:28
CCMenuItem으로 메뉴를 생성하고 타겟과 셀렉터를 정해서 그 명령 안에서 자신을 지우게 되었을 경우 activate() 안에서 에러가 발생한다. 아직 activate()를 실행해야 되는데 remove 당했기 때문에 생긴 문제인데, 구글에서 검색해 본 결과, https://github.c...  
6 cocos2d-x Clipping Layer 수정 똥똥배 670   2013-09-10 2013-09-13 07:28
흔히 구글에서 찾아보면 다음과 같은 Clipping Layer 소스를 찾을 수 있다. CCEGLView::sharedOpenGLView()->setScissorInPoints( // scissorRect is the rectangle you want to show. clippingRegion.origin.x + getPosition().x, clippingRegion.origin.y + ...  
5 cocos2d-x 게임을 iOS에 이식할 때 생기는 문제들 똥똥배 543   2013-08-26 2013-09-13 07:28
1. 윈도우 한정 명령어는 사용할 수 없다. 너무도 당연한 문제. 2. 한글 인코딩 문제 최신 VS을 사용하면 겪지 않을 문제일지 모르겠지만, 보통은 h나 cpp를 ANISI형식 문서로 만들 것이다. XCode에서는 Unicode나 UTF-8 형식을 쓰므로 소스에 박아둔 한글은 ...  
4 cocos2d-x에서 schedule_selector 정의 변화 [1] 똥똥배 521   2013-08-19 2013-09-13 07:28
예전에 적은 글에는 터치와 업데이트를 활성화 시키는 법을 적어놨다. http://hondoom.com/zbxe/index.php?mid=study&document_srl=385031 이글은 cocos2d-1.0.1-x-0.9.1를 기준으로 적은 글인데, 최신버전으로 오면서 update의 정의에 대해서 변화가 생겼...  
3 cocos2d-x 외부파일을 이용한 한글 처리 [1] 똥똥배 1938   2013-07-08 2013-09-13 07:29
cocos2d-x에서는 한글을 그냥 출력하려고 하면 깨져서 나온다. 이유는 VS 편집기에서는 ANSI코드 한글을 사용하는데, cocos2d-x에서 문자는 UTF-8 형식을 쓰기 때문이다. 이것을 해결하는 간단한 방법은 wchar_t wmsg[] = L"한글"; char msg[128]; WideChar...  
2 cocos2d의 가비지 컬렉터 똥똥배 1962   2012-02-07 2013-09-13 07:29
오늘에서야 안 것인데, cocos2d에는 가비지 컬렉터가 존재한다. 스프라이트를 생성하고 Node에 연결하지 않으면, 얼마 후 가비지 컬렉터가 이를 지워 버린다. 스프라이트를 생성하면 바로 Node에 연결해줘야 한다는 것이다. 내 경우, 게임 중에 메모리 할당을...  
» cocos2d-x 터치와 업데이트 활성화 시키기 똥똥배 10656   2011-10-27 2013-09-13 07:29
cocos2d와 달리, 윈도우 환경에서 cocos2d-x 프로그램을 짜보면 상속을 받았음에도 update, ccTouchesBegan 등의 함수가 작동되지 않음을 알 수 있다. 터치 해결법: OnEnter와 OnExit를 추가하고, 다음 같이 적어준다. void HelloWorld::onEnter() { //단일 ...