首页 > 代码库 > cocos2dx基础篇(5)——浅析几个常见类

cocos2dx基础篇(5)——浅析几个常见类

目录

  • 入口类main.cpp

  • 主要控制类AppDelegate.cpp

  • 节点类CCNode

  • 导演类CCDirector

  • 场景类CCScene

  • 层次类CCLayer

  • 精灵类CCSprite

  • 大小类CCSize

  • 坐标CCPoint

  • 矩形类CCRect

  • 数组类CCArray




  • 入口类main.cpp

    这是应用程序的入口类,用于创建cocos2dx的AppDelegate实例、窗口大小、以及运行程序。

    主要代码如下:

    // create the application instance
    AppDelegate app; //创建一个主控制类AppDelegate
    CCEGLView* eglView = CCEGLView::sharedOpenGLView(); //使用OpenGL进行图形渲染
    eglView->setViewName("hello"); //程序窗口标题
    eglView->setFrameSize(480, 320); //程序窗口分辨率大小
    return CCApplication::sharedApplication()->run();


  • 主要控制类AppDelegate.cpp

    这是游戏程序的入口,主要用于游戏程序的逻辑初始化,并创建运行程序的入口界面(即第一个游戏界面场景)。

    里面有三个方法:

        applicationDidFinishLaunching(); //逻辑初始化
        applicationDidEnterBackground(); //切换到后台
        applicationWillEnterForeground(); //切换到前台

    源码分析:

bool AppDelegate::applicationDidFinishLaunching() { //逻辑初始化
    
	//初始化一个导演, 只能有一个导演
    CCDirector* pDirector = CCDirector::sharedDirector();
	//使用OpenGLView
	pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
	//屏幕适配,设置游戏设计的分辨率
	CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480,320,kResolutionShowAll);

    //开启状态显示, 帧数,精灵数等
    pDirector->setDisplayStats(false);

    //刷新频率,每秒60帧。
    pDirector->setAnimationInterval(1.0 / 60);

    //创建一个场景Hello,这是游戏程序的第一个界面
    CCScene *pScene = Hello::scene();

    //运行
    pDirector->runWithScene(pScene);

    return true;
}

// 切换到后台
void AppDelegate::applicationDidEnterBackground() { 
    
	//暂停游戏
	CCDirector::sharedDirector()->stopAnimation();

    // 暂停音乐
    SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

// 切换到前台
void AppDelegate::applicationWillEnterForeground() { 
    
	//游戏恢复
	CCDirector::sharedDirector()->startAnimation();

    //音乐恢复
    SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}


    讲到这里,大家可能会感到疑惑。为什么会设置了两次分辨率大小呢?

        eglView->setFrameSize(480, 320);

        CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480,320,kResolutionShowAll);

    朋友们,这两个的意义是不一样滴。

    setDesignResolutionSize 是设置了我们游戏设计时候的分辨率,即想要适配的宽480高320的屏幕比例。也就是说设计者初衷的游戏分辨率屏幕大小。但是对于每个用户来说,他们使用的设备不一定是(480,320)的,比如手机有大有小。而后面的 kResolutionShowAll 参数意思是按照原比例(480/320)进行放缩以适配设备的实际屏幕。

    eglView->setFrameSize(480, 320) 则是设置我们预想设备的屏幕大小,也就是应用程序窗口的大小。

    以下贴了几张对比图,加深理解。

    1、这是原图片大小,窗口大小为480 * 320。

wKiom1PrKH3CcRIOAAD_nAYof-Q636.jpg


    2、若设置窗口大小为setFrameSize(960, 640),而不设置设计分辨率放缩比例kResolutionShowAll 的情况下,图片不放缩,原图还是480 * 320。

wKioL1PrKZbAgMrIAAFr7Y9wj5U764.jpg


    3、设置了 kResolutionShowAll 之后,图片放缩到适配整个屏幕960 * 640 了。

wKiom1PrKH2BVTStAALbxOSia9g185.jpg




  • 节点类CCNode





  • 导演类CCDirector





  • 场景类CCScene





  • 层次类CCLayer





  • 精灵类CCSprite










  • 大小类CCSize





  • 坐标CCPoint





  • 矩形类CCRect





  • 数组类CCArray










本文出自 “夏天的风” 博客,请务必保留此出处http://shahdza.blog.51cto.com/2410787/1539567