我在上一篇博客中介绍了如何使用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; }