cocos2d-x 入门——hello world 解析

来源:互联网 发布:java打印乘法表 编辑:程序博客网 时间:2024/05/21 10:13

接下来我们来看,AppDelegate的代码。



先看申明


class  AppDelegate : private cocos2d::CCApplication{public:    AppDelegate();    virtual ~AppDelegate();    /**    @brief    Implement CCDirector and CCScene init code here.    @return true    Initialize success, app continue.    @return false   Initialize failed, app terminate.    */    virtual bool applicationDidFinishLaunching();    /**    @brief  The function be called when the application enter background    @param  the pointer of the application    */    virtual void applicationDidEnterBackground();    /**    @brief  The function be called when the application enter foreground    @param  the pointer of the application    */    virtual void applicationWillEnterForeground();};


里面都有注释,主要看函数applicationDidFinishLaunching() 


bool AppDelegate::applicationDidFinishLaunching() {    // initialize director    CCDirector* pDirector = CCDirector::sharedDirector();    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();    pDirector->setOpenGLView(pEGLView);CCSize frameSize = pEGLView->getFrameSize();    // Set the design resolution#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)    pEGLView->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionShowAll);#else    pEGLView->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionNoBorder);#endif        vector<string> searchPath;    // In this demo, we select resource according to the frame's height.    // If the resource size is different from design resolution size, you need to set contentScaleFactor.    // We use the ratio of resource's height to the height of design resolution,    // this can make sure that the resource's height could fit for the height of design resolution.    // if the frame's height is larger than the height of medium resource size, select large resource.if (frameSize.height > mediumResource.size.height){        searchPath.push_back(largeResource.directory);        pDirector->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height, largeResource.size.width/designResolutionSize.width));}    // if the frame's height is larger than the height of small resource size, select medium resource.    else if (frameSize.height > smallResource.size.height)    {        searchPath.push_back(mediumResource.directory);                pDirector->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height, mediumResource.size.width/designResolutionSize.width));    }    // if the frame's height is smaller than the height of medium resource size, select small resource.else    {        searchPath.push_back(smallResource.directory);        pDirector->setContentScaleFactor(MIN(smallResource.size.height/designResolutionSize.height, smallResource.size.width/designResolutionSize.width));    }    // set searching path    CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);    // turn on display FPS    pDirector->setDisplayStats(true);    // set FPS. the default value is 1.0/60 if you don't call this    pDirector->setAnimationInterval(1.0 / 60);    // create a scene. it's an autorelease object    CCScene *pScene = HelloWorld::scene();    // run    pDirector->runWithScene(pScene);    return true;}

pDirector是导演类。



重点看这句

// create a scene. it's an autorelease object
    CCScene *pScene = HelloWorld::scene();

 // run
    pDirector->runWithScene(pScene);


这样他就运行起一个helloworld的场景。


接下来的逻辑就是hello world的内容了


还是看申明:

class HelloWorld : public cocos2d::CCLayer{public:    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone    virtual bool init();      // there's no 'id' in cpp, so we recommend returning the class instance pointer    static cocos2d::CCScene* scene();        // a selector callback    void menuCloseCallback(CCObject* pSender);        // implement the "static node()" method manually    CREATE_FUNC(HelloWorld);};



我们一个一个函数来分析:


CREATE_FUNC(HelloWorld);

这个宏用来申明 HelloWorld的creat函数。



to be continue



0 0
原创粉丝点击