cocos2dx 3.x HelloWorld 코드 인식

3101 단어 helloworldcocos2dx

1. AppDelegate.cpp

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLView::create("My Game");
        director->setOpenGLView(glview);
    }

    // turn on display FPS
    director->setDisplayStats(true);

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    // create a scene. it's an autorelease object
    auto scene = HelloWorld::createScene();

    // run
    director->runWithScene(scene);

    return true;
}

auto director = Director::getInstance();//감독류 초기화
auto glview = director->getOpenGLView();//감독 클래스를 통해 OpenGL 창 가져오기
director->setDisplayStats(true);//게임의 프레임 수를 표시할 지 여부와 같은 디버깅 정보를 설정합니다
director->setAnimationInterval(1.0/60);//게임 프레임 수 설정, 현재 1초 60 프레임으로 설정
auto scene = HelloWorld::createScene();//장면 생성하기
director->runWithScene(scene);//이 단계를 실행해야만 장면 클래스를 표시할 수 있습니다

2.HelloWorldScene.h

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

class HelloWorld : public cocos2d::Layer
{
public:
    // there's no 'id' in cpp, so we recommend returning the class instance pointer
    static cocos2d::Scene* createScene();

    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init();  
    
    // a selector callback
    void menuCloseCallback(cocos2d::Ref* pSender);
    
    // implement the "static create()" method manually
    CREATE_FUNC(HelloWorld);
};

#endif // __HELLOWORLD_SCENE_H__

장면 클래스는 실제 장면이 아니라 새로운 장면 클래스입니다. auto scene = Hello World::createScene().
CREATE_FUNC(HelloWorld);
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
    __TYPE__ *pRet = new __TYPE__(); \
    if (pRet && pRet->init()) \
    { \
        pRet->autorelease(); \
        return pRet; \
    } \
    else \
    { \
        delete pRet; \
        pRet = NULL; \
        return NULL; \
    } \
}

매개변수TYPE__ 사실은 매크로 안의 매크로로 컴파일할 때TYPE__모두 HelloWorld로 교체, 사실 CREATEFUNC(HelloWorld)는HelloWorld::create() 함수로HelloWorld 대상을 만드는 데 사용됩니다.

3. HelloWorldScene.cpp

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

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

    // return the scene
    return scene;
}

auto scene = Scene::create();//장면 클래스 만들기
auto layer = HelloWorld::create();//HelloWorld 객체를 만들려면create 함수는 매크로 CREATE 를 사용합니다.FUNC(HelloWorld)가 정의합니다.
scene->addChild(layer);//layer 대상을 scene에 추가
return scene;//장면으로 돌아가기

좋은 웹페이지 즐겨찾기