加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos Studio工程分析

发布时间:2020-12-14 21:42:10 所属栏目:百科 来源:网络整理
导读:上一篇博客中介绍了如何使用Cocos Studio创建工程,这篇博客分析上一篇博客的工程,打开在上一篇博客中创建的工程后可以看到工程中的文件如下 文件分析: Classes: 存放跨平台的C++代码 cocosstudio: 放置项目中使用的所有资源 proj.android: 用于开发And

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


文件分析:

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打开项目后的项目工程文件结构

代码分析:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include"main.h"
#include"AppDelegate.h"
#include"cocos2d.h"
//Cocos2d-X的命名空间
USING_NS_CC;
//链接静态链接库
#if_MSC_VER>1700
#pragmacomment(lib,"libcocos2d_2013.lib")
#else
#endif
//Cocos2d-X的main函数
int APIENTRY_tWinMain( HINSTANCE hInstance,
hPrevInstance,
LPTSTR lpCmdLine,
nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
//创建程序实例
AppDelegateapp;
//执行app的run方法
return Application::getInstance()->run();
}

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

29
#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();
//当程序进入后台后调用的函数
applicationDidEnterBackground();
//当程序恢复到前台后调用的函数
applicationWillEnterForeground();
};
#endif

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

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include"AppDelegate.h"
#include"HelloWorldScene.h"
//Cocos2d-X的命名空间
USING_NS_CC;
//构造函数
AppDelegate::AppDelegate(){
}
//析构函数
AppDelegate::~AppDelegate()
{
}
//设置OpenGL属性
AppDelegate::initGLContextAttrs()
{
//设置OpenGL上下文属性,现在只能设置六个属性:
//红,绿,蓝,阿尔法,深度,模板
GLContextAttrsglContextAttrs={8,8,24,8};
GLView::setGLContextAttrs(glContextAttrs);
}
//程序启动完成后会进入的函数
AppDelegate::applicationDidFinishLaunching()
{
//初始化导演
autodirector=Director::getInstance();
//获得OpenGL视图
autoglview=director->getOpenGLView();
if (!glview)
{
//设置程序名和窗口的尺寸
glview=GLViewImpl::createWithRect( "myProject" ,Rect(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" );
//调用场景
autoscene=HelloWorld::createScene();
//执行场景
director->runWithScene(scene);
return ;
}
//当别人打电话来的时候调用的函数,程序进入后台
AppDelegate::applicationDidEnterBackground()
{
//停止播放动画
Director::getInstance()->stopAnimation();
//如果程序中有背景音乐,停止播放背景音乐
//SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}
//当通话结束后,程序进入前台
AppDelegate::applicationWillEnterForeground()
{
//播放动画
Director::getInstance()->startAnimation();
//当程序中有背景音乐的时候继续播放背景音乐
//SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
HelloWorldScene.h中的代码(本人已经注释)

20
#ifndef__HELLOWORLD_SCENE_H__
#define__HELLOWORLD_SCENE_H__
//HelloWorld继承自Layer
HelloWorld: cocos2d::Layer
//创建场景
static cocos2d::Scene*createScene();
//初始化场景
init();
//实施静态的create方法
CREATE_FUNC(HelloWorld);
};
#endif//__HELLOWORLD_SCENE_H__

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

40
#include"HelloWorldScene.h"
#include"cocostudio/CocoStudio.h"
#include"ui/CocosGUI.h"
//使用动画需要引入的命名空间
using namespace cocostudio::timeline;
//场景创建函数
Scene*HelloWorld::createScene()
{
//创建场景
autoscene=Scene::create();
//创建层
autolayer=HelloWorld::create();
//将层添加到场景中
scene->addChild(layer);
//返回场景
scene;
}
//场景初始化函数
HelloWorld::init()
{
//初始化父类的层
(!Layer::init())
{
false ;
}
//加载Cocostudio的资费
autorootNode=CSLoader::createNode( "MainScene.csb" );
addChild(rootNode);
;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!