Cocos Studio工程分析

我在上一篇博客中介绍了如何使用Cocos Studio创建工程,这篇博客分析上一篇博客的工程,打开在上一篇博客中创建的工程后可以看到工程中的文件如下

Cocos Studio工程分析_第1张图片

文件分析:

Classes:存放跨平台的C++代码

cocosstudio:放置项目中使用的所有资源

proj.android:用于开发Android上的游戏

proj.ios_mac:用于开发苹果手机上的游戏

proj.win32:用于开发Windows上的游戏

Resource:用于保存资源

cocos-project.json:项目配置文件

myProject.ccs:Cocos Studio项目的启动文件,双击该文件可以开启您的Cocos studio项目

myProject.cfg:项目配置文件,用于管理您的项目配置信息

myProject.udf:项目配置文件

 

使用Visual  Studio 2012打开项目后的项目工程文件结构

Cocos Studio工程分析_第2张图片

 

代码分析:

main.cpp中的代码(本人已经注释)

#include "main.h"
#include "AppDelegate.h"
#include "cocos2d.h"

//Cocos2d-X的命名空间
USING_NS_CC;

//链接静态链接库
#if _MSC_VER > 1700
#pragma comment(lib,"libcocos2d_2013.lib")
#pragma comment(lib,"libbox2d_2013.lib")
#pragma comment(lib,"libSpine_2013.lib")
#else
#pragma comment(lib,"libcocos2d_2012.lib")
#pragma comment(lib,"libbox2d_2012.lib")
#pragma comment(lib,"libSpine_2012.lib")
#endif

//Cocos2d-X的main函数
int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    //创建程序实例
    AppDelegate app;

	//执行app的run方法
    return Application::getInstance()->run();
}

 

AppDelegate.h中的代码(本人已经注释)

#ifndef  _APP_DELEGATE_H_
#define  _APP_DELEGATE_H_

#include "cocos2d.h"

//AppDelegate继承自Application
class  AppDelegate : private cocos2d::Application
{
public:
	//构造函数
    AppDelegate();

	//析构函数
    virtual ~AppDelegate();

	//初始化OpenGL属性
    virtual void initGLContextAttrs();

	//当程序启动后调用的函数
    virtual bool applicationDidFinishLaunching();

    //当程序进入后台后调用的函数
    virtual void applicationDidEnterBackground();

   //当程序恢复到前台后调用的函数
    virtual void applicationWillEnterForeground();
};

#endif 


AppDelegate.cpp中的代码(本人已经注释)

#include "AppDelegate.h"
#include "HelloWorldScene.h"

//Cocos2d-X的命名空间
USING_NS_CC;

//构造函数
AppDelegate::AppDelegate() {

}

//析构函数
AppDelegate::~AppDelegate() 
{
}


//设置OpenGL属性
void AppDelegate::initGLContextAttrs()
{
	//设置OpenGL上下文属性,现在只能设置六个属性:
	//红,绿,蓝,阿尔法,深度,模板
    GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8};
    GLView::setGLContextAttrs(glContextAttrs);
}


//程序启动完成后会进入的函数  
bool AppDelegate::applicationDidFinishLaunching() 
{
	//初始化导演
    auto director = Director::getInstance();

	//获得OpenGL视图
    auto glview = director->getOpenGLView();

    if(!glview) 
	{
		//设置程序名和窗口的尺寸
        glview = GLViewImpl::createWithRect("myProject", Rect(0, 0, 960, 640));
    
		//设置OpenGL视图
		director->setOpenGLView(glview);
    }

	//设置分辨率
    director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);

    //设置是否显示调试信息
    director->setDisplayStats(true);

    //设置帧率
    director->setAnimationInterval(1.0 / 60);

	//设置文件的搜索路径
    FileUtils::getInstance()->addSearchPath("res");

    //调用场景
    auto scene = HelloWorld::createScene();

    //执行场景
    director->runWithScene(scene);

    return true;
}


//当别人打电话来的时候调用的函数,程序进入后台
void AppDelegate::applicationDidEnterBackground() 
{
	//停止播放动画
    Director::getInstance()->stopAnimation();

    //如果程序中有背景音乐,停止播放背景音乐 
    //SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}

//当通话结束后,程序进入前台
void AppDelegate::applicationWillEnterForeground() 
{
	//播放动画
    Director::getInstance()->startAnimation();

    //当程序中有背景音乐的时候继续播放背景音乐
    //SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}

 

HelloWorldScene.h中的代码(本人已经注释)

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

//HelloWorld继承自Layer
class HelloWorld : public cocos2d::Layer
{
public:
	//创建场景
    static cocos2d::Scene* createScene();

    //初始化场景
    virtual bool init();

    // 实施静态的create方法
    CREATE_FUNC(HelloWorld);
};

#endif // __HELLOWORLD_SCENE_H__


HelloWorldScene.cpp中的代码(本人已经注释)

#include "HelloWorldScene.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"

USING_NS_CC;

//使用动画需要引入的命名空间
using namespace cocostudio::timeline;

//场景创建函数
Scene* HelloWorld::createScene()
{
    //创建场景
    auto scene = Scene::create();
    
    //创建层
    auto layer = HelloWorld::create();

    //将层添加到场景中
    scene->addChild(layer);

    //返回场景
    return scene;
}

//场景初始化函数
bool HelloWorld::init()
{
	//初始化父类的层
    if(!Layer::init())
    {
        return false;
    }
    
	//加载Coco studio的资费
    auto rootNode = CSLoader::createNode("MainScene.csb");
    addChild(rootNode);

    return true;
}

 

你可能感兴趣的:(Cocos Studio工程分析)