我在上一篇博客中介绍了如何使用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中的代码(本人已经注释)
- #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;
- }