向cocos攻城狮进军之HelloWorld

前端之家收集整理的这篇文章主要介绍了向cocos攻城狮进军之HelloWorld前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1:当我们找到一个项目的时候打开编译不通过,有可能是因为版本不同的原因,那么我们如何查看cocos2d-x源码版本
在工程目录当中libcocos2d下面\cocos2dx\cocos2d.cpp

#include "cocos2d.h"

NS_CC_BEGIN

const char* cocos2dVersion()
{
    return "cocos2d-x 2.2.6";
}

NS_CC_END

2:工程的入口:
main.cpp下面

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

// create the application instance
AppDelegate app;
CCEGLView* eglView = CCEGLView::sharedOpenGLView();
eglView->setViewName("myHello");
eglView->setFrameSize(480,320);
return CCApplication::sharedApplication()->run();

}

 
 

工程的真正入口是在:

bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
CCDirector* pDirector = CCDirector::sharedDirector();
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
pDirector->setOpenGLView(pEGLView);
// 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;
}

几个重要的梳理点:
AppDelegate 私有继承 CCApplication
CCApplication public继承 CCApplicationProtocol
CCApplicationProtocol定义了接口
CCApplication 各个平台的不同逻辑
AppDelegate仅实现CCApplicationProtocol 里的接口,实现了代理功能的局限化。
这里其实用到了代理模式,代理模式的改进;

AppDelegate app;
CCApplication::sharedApplication()->run()

在CCApplication::sharedApplication()里面会把 app对象赋给
CCApplication * sm_pSharedApplication;
这里: 子类对象赋给父类
父类调用Run函数。Run函数里面调用了applicationDidFinishLaunching()函数,这个函数由AppDelegate实现,整个过程用到了多态的机制。

3:游戏逻辑结构:

一个导演同一时间只能运行一个场景, 一个场景当中, 可以同时加载多个层,
一个层同可以可载多个精灵。层中亦可以加层。

4:锚点:
锚点影响缩放。影响旋转。
锚点好比一个钉子,你要把一张纸钉在墙上,这个钉子你可以放在纸中间,也可以放在纸的左上角右下角等等。总之,锚点不是重心。
上图就好比一张纸,如果你的钉子在左下角,那么左下角是锚点,你把钉子在左下角盯住,那么这张纸旋转也是围绕左下角这个点旋转。

猜你在找的Cocos2d-x相关文章