向cocos攻城狮进军之HelloWorld

来源:互联网 发布:知乎美国政治 编辑:程序博客网 时间:2024/04/30 11:53

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

#include "cocos2d.h"NS_CC_BEGINconst char* cocos2dVersion(){    return "cocos2d-x 2.2.6";}NS_CC_END2:工程的入口:main.cpp下面

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

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

}

工程的真正入口是在:

bool AppDelegate::applicationDidFinishLaunching() {// initialize directorCCDirector* pDirector = CCDirector::sharedDirector();CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();pDirector->setOpenGLView(pEGLView);// turn on display FPSpDirector->setDisplayStats(true);// set FPS. the default value is 1.0/60 if you don't call thispDirector->setAnimationInterval(1.0 / 60);// create a scene. it's an autorelease objectCCScene *pScene = HelloWorld::scene();// runpDirector->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:锚点:
锚点影响缩放。影响旋转。
锚点好比一个钉子,你要把一张纸钉在墙上,这个钉子你可以放在纸中间,也可以放在纸的左上角右下角等等。总之,锚点不是重心。
这里写图片描述
上图就好比一张纸,如果你的钉子在左下角,那么左下角是锚点,你把钉子在左下角盯住,那么这张纸旋转也是围绕左下角这个点旋转。

1 0
原创粉丝点击