【笔记】Cocos2d-x高级开发教程:制作自己的<捕鱼达人> 笔记一:序_前言_第一章
2013-12-26 16:41
501 查看
【笔记】Cocos2d-x高级开发教程:制作自己的<捕鱼达人> 笔记一:序_前言_第一章
转载请注明出处:http://blog.csdn.net/l_badluck/article/details/17585939
-------------------------------------------------
一切都是为了梦想..
三年,每天学5个小时 3*5*366=5490 这就是自己离梦想的距离
5490-4=5486
-------------------------------------------------
序
1.Cocos2d-x开源项目诞生于2010年7月。
2.代表作品:<捕鱼达人><我叫MT><龙之力量><找你妹>等。
3.本书中会讲解游戏框架的搭建,基本游戏元素的使用、动作、音乐与音效、物理引擎、高级开发技巧、游戏优化策略以及网络编程等内容,还挑选了引擎的调度系统、动作系统、输入事件处理与底层绘图原理等内容的剖析。
4.触屏时间的派发有坑时该如何绕过去。
5.内存引用计数用着不爽时如何用boost智能指针来替换。
6.cocos2d-iphone如何移植到cocos2d-x上。讲解其中的技术策略、各种策略的优劣以及工作分解。
-------------------------------------------------
前言
1.Cocos2d-x采用C++编写,基于Cocos2d-iphone设计。
2.书中会介绍一些新技术,如多平台开发、可视化开发、游戏移植、cocos2d-HTML5.
3.本书示例游戏中的代码和资源文件可以从 随书源代码 下载。
本书的电子版本下载地址 http://pan.baidu.com/s/1dD7SSUl
PS:
------------------------------------------------
第一部分 引擎基础
1.介绍如何建立Cocos2d-x的开发环境,游戏开发的基本概念,常用的Cocos2d-x游戏元素,如何创建动态的游戏,以及如何使玩家与游戏进行交互。介绍引擎基本部件,也阐述了引擎关键部分的原理。
-------------------------------------------------
第一章 Hello Cocos2d-x
1.Cocos2d-x的原型是Cocos2d,一个最早来源于几位Python开发者在PyWeek竞赛中的作品,目的是封装底层绘图代码,简化2d游戏的开发过程,避免每次都"重新发明轮子",让开发者不必关心绘图的细节。
2.Cocos2d-x只需要少量调整,就可以移植到IOS、Android、Windows、Linux诸多平台上。
3.本质上,Cocos2d是一个图形引擎,封装了复杂的图形接口,通过抽象出精灵、动作等概念,降低了游戏开发难度,简化了开发过程。Cocos2dx为了保证跨平台,在此基础上做了很多扩展,包括一套Object-C风格的基础类系、平台无关的多点触摸协议、重力感应和音频系统等。
4.Cocos2d特性见到介绍:
5.书中用到的工具
VS2010中文版
我的百度云盘下载链接 http://pan.baidu.com/s/1jG7IFDO
cocos2d-2.0-x-2.0.4
我的百度云盘下载链接 http://pan.baidu.com/s/1o6yNePk
6.打开VS,新建项目,可以看到Cocos2d-x项目模板。需要注意的是,默认情况下新建项目的存放位置应该设置在Cocosd-x引擎的安装目录下,否则可能因为找不到库文件而不能通过编译(此时需要在项目编译选项中设置头文件和库的搜索路径)。建立HelloWorld工程步骤参看本书电子版,不赘述。
PS:书中是在新的解决方案下建立新工程,我一般喜欢在cocos2d-2.0-x-2.0.4解决方案下建新工程。
7.新建的工程中
"main.h""main.cpp""resource.h"
它们是平台相关的程序文件,为Windows专有。通常情况下,程序入口与资源文件管理在不同平台下是不同的,但cocos2d-x的模板已经基本处理好了这些细节,不需要对它们进行修改。
------------------------------------------
"AppDelegate.h""AppDelegate.cpp"
是Cocos2d-x游戏的通用入口文件。类似主函数所在的文件。
AppDelegate类。控制着游戏的生命周期。除了构造函数和析构函数,有三个方法:
[align=left][/align]
[align=left][/align]
绘制间隔指的是两次绘制的时间间隔,因此绘制间隔的倒数就是FPS上限。对于移动设备来说,通常会将FPS限制在一个适当的范围内。过低的每秒重绘次数会使动画显示出卡顿的现象,而提高每秒重绘次数会导致设备运算量大幅增加,造成更高的能耗。
人眼的刷新频率约为60次每秒,因此FPS限定在60是一个较为合理的设置。
[align=left][/align]
[align=left][/align]
-----------------------------------------
"HelloWorldScene.h""HelloWorldScene.cpp"
定义了项目中默认的游戏场景
Cocos2d的游戏结构可以简单地概括为场景、层、精灵。这两个文件就是一个场景类的实现。
场景中可以包含多个层,层中可以包含多个精灵。
[align=left][/align]
[align=left][/align]
[align=left][/align]
HelloWorld 场景类继承自 CCLayer,所以它本身是一个层。
[align=left][/align]
[align=left][/align]
在层下设置一个创建场景的静态函数是一个常见的技巧。
[align=left][/align]
[align=left][/align]
-----------------------------------------
小结
1.AppDelegate:cocos2dx项目中的程序入口文件,提供对程序生命周期的控制事件。
2.游戏元素:任何可以呈现出来的元素,例如场景、层和精灵。
3.CCNode::addChild方法:用于将一个游戏元素添加到另一个元素中。
在创建一个层或者场景时,通常会初始化自己的游戏元素,定义一些特殊的效果,或者是将其他的游戏元素组合到一起。
而addChild方法就是用于组合游戏元素的。
4.cocos2dx在一个实例方法中初始化类,而不在构造函数中初始化类。是因为这个引擎的来源特殊。
(PS:小生邪恶的理解为这类似于文言文中的直译与意译,cocos2dx从cocos2d-iphone移植过来的时候是直译)
文章中所使用的自己建立的第一个工程代码下载地址:http://download.csdn.net/detail/l_badluck/6773287
转载请注明出处:http://blog.csdn.net/l_badluck/article/details/17585939
-------------------------------------------------
一切都是为了梦想..
三年,每天学5个小时 3*5*366=5490 这就是自己离梦想的距离
5490-4=5486
-------------------------------------------------
序
1.Cocos2d-x开源项目诞生于2010年7月。
2.代表作品:<捕鱼达人><我叫MT><龙之力量><找你妹>等。
3.本书中会讲解游戏框架的搭建,基本游戏元素的使用、动作、音乐与音效、物理引擎、高级开发技巧、游戏优化策略以及网络编程等内容,还挑选了引擎的调度系统、动作系统、输入事件处理与底层绘图原理等内容的剖析。
4.触屏时间的派发有坑时该如何绕过去。
5.内存引用计数用着不爽时如何用boost智能指针来替换。
6.cocos2d-iphone如何移植到cocos2d-x上。讲解其中的技术策略、各种策略的优劣以及工作分解。
-------------------------------------------------
前言
1.Cocos2d-x采用C++编写,基于Cocos2d-iphone设计。
2.书中会介绍一些新技术,如多平台开发、可视化开发、游戏移植、cocos2d-HTML5.
3.本书示例游戏中的代码和资源文件可以从 随书源代码 下载。
本书的电子版本下载地址 http://pan.baidu.com/s/1dD7SSUl
PS:
页码 | 勘误内容 | ||
2 | 前言,P2,“本书分工与致谢”第一段第二行“丁伟杰”改为“丁炜杰” | ||
9 | 第一章第9页,bool init()代码中(2)里的代码前5行是一句。但排版却在第四行和第五行之间多了一空行,而且缩进也没了,这样会让读者误以为这是两句代码,而实际上这就是一句,被排版切开了 |
第一部分 引擎基础
1.介绍如何建立Cocos2d-x的开发环境,游戏开发的基本概念,常用的Cocos2d-x游戏元素,如何创建动态的游戏,以及如何使玩家与游戏进行交互。介绍引擎基本部件,也阐述了引擎关键部分的原理。
-------------------------------------------------
第一章 Hello Cocos2d-x
1.Cocos2d-x的原型是Cocos2d,一个最早来源于几位Python开发者在PyWeek竞赛中的作品,目的是封装底层绘图代码,简化2d游戏的开发过程,避免每次都"重新发明轮子",让开发者不必关心绘图的细节。
2.Cocos2d-x只需要少量调整,就可以移植到IOS、Android、Windows、Linux诸多平台上。
3.本质上,Cocos2d是一个图形引擎,封装了复杂的图形接口,通过抽象出精灵、动作等概念,降低了游戏开发难度,简化了开发过程。Cocos2dx为了保证跨平台,在此基础上做了很多扩展,包括一套Object-C风格的基础类系、平台无关的多点触摸协议、重力感应和音频系统等。
4.Cocos2d特性见到介绍:
5.书中用到的工具
VS2010中文版
我的百度云盘下载链接 http://pan.baidu.com/s/1jG7IFDO
cocos2d-2.0-x-2.0.4
我的百度云盘下载链接 http://pan.baidu.com/s/1o6yNePk
6.打开VS,新建项目,可以看到Cocos2d-x项目模板。需要注意的是,默认情况下新建项目的存放位置应该设置在Cocosd-x引擎的安装目录下,否则可能因为找不到库文件而不能通过编译(此时需要在项目编译选项中设置头文件和库的搜索路径)。建立HelloWorld工程步骤参看本书电子版,不赘述。
PS:书中是在新的解决方案下建立新工程,我一般喜欢在cocos2d-2.0-x-2.0.4解决方案下建新工程。
7.新建的工程中
"main.h""main.cpp""resource.h"
它们是平台相关的程序文件,为Windows专有。通常情况下,程序入口与资源文件管理在不同平台下是不同的,但cocos2d-x的模板已经基本处理好了这些细节,不需要对它们进行修改。
------------------------------------------
"AppDelegate.h""AppDelegate.cpp"
是Cocos2d-x游戏的通用入口文件。类似主函数所在的文件。
AppDelegate类。控制着游戏的生命周期。除了构造函数和析构函数,有三个方法:
[align=left][/align]
bool AppDelegate::applicationDidFinishLaunching() {//应用程序启动后将调用这个方法。默认的视线中已经包含了游戏启动后的必要准备 //初始化游戏引擎控制器CCDirector,以便启动游戏引擎 CCDirector *pDirector = CCDirector::sharedDirector(); pDirector->setOpenGLView(CCEGLView::sharedOpenGLView()); //启动FPS(每秒帧速率)显示 pDirector->setDisplayStats( true); //设置绘制间隔. 默认值 1.0/60 pDirector->setAnimationInterval(1.0 / 60); //创建一个场景. it's an autorelease object CCScene *pScene = HelloWorld::scene(); //需要在此处来对游戏进行必要的初始化,如读取游戏设置、初始化随机数列表等。(PS:不知道自己理解的对不 ^_^ 卖萌) //运行场景 pDirector->runWithScene(pScene); return true; }
[align=left][/align]
绘制间隔指的是两次绘制的时间间隔,因此绘制间隔的倒数就是FPS上限。对于移动设备来说,通常会将FPS限制在一个适当的范围内。过低的每秒重绘次数会使动画显示出卡顿的现象,而提高每秒重绘次数会导致设备运算量大幅增加,造成更高的能耗。
人眼的刷新频率约为60次每秒,因此FPS限定在60是一个较为合理的设置。
[align=left][/align]
// This function will be called when the app is inactive. // When comes a phone call,it's be invoked too // 当程序将要进入后台时会调用这个方法。具体来说,当用户把程序切换到后台, //或手机接到电话或短信后程序被系统切换到后台时,会调用这个方法。 //此时应该暂停游戏中正在播放的音效。也应该在此时进行动作操作的暂停。 void AppDelegate::applicationDidEnterBackground() { CCDirector::sharedDirector()->stopAnimation(); SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // this function will be called when the app is active again //此方法与applicationDidEnterBackground()成对出现,程序在回到前台时被调用 //通常在这里继续播放刚才暂停的音乐,显示游戏暂停菜单等。 void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->startAnimation(); SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); }
[align=left][/align]
-----------------------------------------
"HelloWorldScene.h""HelloWorldScene.cpp"
定义了项目中默认的游戏场景
Cocos2d的游戏结构可以简单地概括为场景、层、精灵。这两个文件就是一个场景类的实现。
场景中可以包含多个层,层中可以包含多个精灵。
[align=left][/align]
[align=left][/align]
class HelloWorld : public cocos2d::CCLayer { public : // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone virtual bool init(); // there's no 'id' in cpp, so we recommand to return the exactly class pointer static cocos2d::CCScene* scene(); // a selector callback void menuCloseCallback(CCObject* pSender); // implement the "static node()" method manually CREATE_FUNC(HelloWorld); };
[align=left][/align]
HelloWorld 场景类继承自 CCLayer,所以它本身是一个层。
[align=left][/align]
CCScene* HelloWorld::scene() { CCScene * scene = NULL; do { // 'scene' is an autorelease object 创建一个空场景 scene = CCScene::create(); CC_BREAK_IF(! scene); // 'layer' is an autorelease object 创建一个层 HelloWorld *layer = HelloWorld::create(); CC_BREAK_IF(! layer); // add layer as a child to scene // 把层添加到场景中。 // 只有放置到已经呈现出来的游戏元素中,它才会呈现出来 scene->addChild(layer); } while (0); // return the scene return scene; }
[align=left][/align]
在层下设置一个创建场景的静态函数是一个常见的技巧。
[align=left][/align]
// on "init" you need to initialize your instance bool HelloWorld::init() { bool bRet = false ; do { ////////////////////////////////////////////////////////////////////////// // super init first ////////////////////////////////////////////////////////////////////////// CC_BREAK_IF(! CCLayer::init());//调用父类的init方法进行最初的初始化 ////////////////////////////////////////////////////////////////////////// // add your codes below... ////////////////////////////////////////////////////////////////////////// // 1. Add a menu item with "X" image, which is clicked to quit the program. // Create a "close" menu item with close icon, it's an auto release object. // 创建菜单并添加到层 CCMenuItemImage *pCloseItem = CCMenuItemImage::create( "CloseNormal.png" , "CloseSelected.png" , this, menu_selector(HelloWorld::menuCloseCallback)); CC_BREAK_IF(! pCloseItem); // Place the menu item bottom-right conner. pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20)); // Create a menu with the "close" menu item, it's an auto release object. CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); pMenu->setPosition(CCPointZero); CC_BREAK_IF(! pMenu); // Add the menu to HelloWorld layer as a child layer. this->addChild(pMenu, 1); // 2. Add a label shows "Hello World". // Create a label and initialize with string "Hello World". // 创建"Hello World"文本标签并添加到层中 CCLabelTTF* pLabel = CCLabelTTF::create( "Hello World" , "Arial" , 24); CC_BREAK_IF(! pLabel); // Get window size and place the label upper. CCSize size = CCDirector::sharedDirector()->getWinSize(); pLabel->setPosition(ccp(size.width / 2, size.height - 50)); // Add the label to HelloWorld layer as a child layer. this->addChild(pLabel, 1); // 3. Add add a splash screen, show the cocos2d splash image. // 创建显示"HelloWorld.png"的精灵并添加到层中 CCSprite* pSprite = CCSprite::create( "HelloWorld.png" ); CC_BREAK_IF(! pSprite); // Place the sprite on the center of the screen pSprite->setPosition(ccp(size.width/2, size.height/2)); // Add the sprite to HelloWorld layer as a child layer. //void CCNode::addChild(CCNode *child, int zOrder) //zOrder指child的z轴顺序,值越大,表示显示位置越靠前 this->addChild(pSprite, 0); bRet = true; } while (0); return bRet; }
[align=left][/align]
-----------------------------------------
小结
1.AppDelegate:cocos2dx项目中的程序入口文件,提供对程序生命周期的控制事件。
2.游戏元素:任何可以呈现出来的元素,例如场景、层和精灵。
3.CCNode::addChild方法:用于将一个游戏元素添加到另一个元素中。
在创建一个层或者场景时,通常会初始化自己的游戏元素,定义一些特殊的效果,或者是将其他的游戏元素组合到一起。
而addChild方法就是用于组合游戏元素的。
4.cocos2dx在一个实例方法中初始化类,而不在构造函数中初始化类。是因为这个引擎的来源特殊。
(PS:小生邪恶的理解为这类似于文言文中的直译与意译,cocos2dx从cocos2d-iphone移植过来的时候是直译)
文章中所使用的自己建立的第一个工程代码下载地址:http://download.csdn.net/detail/l_badluck/6773287
相关文章推荐
- Cocos2d-x高级开发教程:制作自己的《捕鱼达人》
- Cocos2d-x高级开发教程:制作自己的《捕鱼达人》
- Cocos2d-x高级开发教程阅读笔记
- 《Cocos2d-x高级开发教程》学习笔记 OpenGL部分
- <Python高级全栈开发工程师-1>学习过程笔记【181-184】正则表达式 <特殊字符><函数>
- < 笔记 > Python - 08 Python 面向对象高级编程(OOP Advanced Features)
- <java编程思想>(thing in java) 阅读笔记(第一章至第六章)
- <转>cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
- <<SQL Server 2005 高级程序设计>> 学习笔记(3)
- <<UNIX环境高级编程>>之第一章理解
- <仅是自己做笔记。。。系列15>实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3这些都要找出来
- cocos2d-x 3.0开发笔记---用progressTimer制作血槽
- < 笔记 > Python - 04 Python 高级特性
- <学习html>第二天笔记-标签分类、关系;开发工具;文档类型;标签语义化;HTML标签;问题“图像标签代码语法无误,但是图像显示不出来”
- <<UNIX环境高级编程>>学习总结——第一章:UNIX基础知识
- 《Cocos2D-iPhone 游戏开发之路》第3节 高仿<Flappy Bird>教程(1)
- <JavaScript高级程序设计>笔记二: 创建对象