`
bsr1983
  • 浏览: 1125552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cocos2d简介及入门

 
阅读更多

cocos2d学习笔记

 

第一章 简介

1.1选择iphonecocos2d的理由

       目前有两种集成在cocos2d里的物理引擎:ChipmunkBox2D。这两种物理引擎仅仅在编写它们的语言上有一些细微的差别:Chipmunk是用C编写而成的,而Box2D是用C++编写而成的,但它们的功能几乎完全一样。

       cocos2d把底层的OpenGL ES代码封装的特别好。大多数图形都是用简单的精灵类(CCSprite)来显示的,而精灵对象又是根据图像文件创建的。也就是说,一个精灵对象就是一个具有缩放、翻转和着色能力的纹理,只要简单地对精灵对象相应的Objective-C属性稍作修改就可以完成这些效果。

第二章 入门

2.1 准备工作

2.1.1 系统要求

       20106iphone SDK4发布以来,iOS      开发就必须在Mac OS X10.6及其以上版本中进行。

2.1.2 注册称为iOS开发者

2.1.3 证书和授权文件

2.14 下载并安装iPhone SDK

2.1.5 下载并安装cocos2d

1.安装cocos2d Xcode项目模板

       终端输入

       sudo /cocos2d所在根目录名称/install-templates.sh

2.2 HelloWorld应用程序

2.2.1 HelloWorld文件在项目中的位置

2.2.2 资源

       Resources组中的Default.png文件是在iOS加载程序时显示的图像,而Icon.png文件是应用程序的图标。fps_images.png文件是cocos2d用来显示帧率的,是不允许删除或修改的。

       Info.plist文件包含了一些与应用程序相关的配置信息,仅在即将发布应用程序时才需要修改该文件。

2.2.3 其他资源

       实际上,每个iOS应用程序都是用NSAutoreleasePool来帮助管理内存。简单来说,通过向对象发送自动释放消息,就不必再为何时向它们发送释放消息而烦恼了。自动释放池保证所有被自动释放的对象最终都会从内存中释放。

       HelloWorld_prefix.pch是一个用于加快编译速度的工具。只有永远不会变化或很少发生变化的头文件才能被添加到前缀头文件中。这样做可以使框架的代码提前被编译,并对所有类可见。但是,如果添加到前缀头文件中的头文件发生了变化,那么所有代码会被重新编译,这也是为什么只能向前缀头文件中添加不变的头文件的原因。

2.2.4

       每个iOS应用程序都有一个实现UIApplicationDelegate协议的AppDelegate类。

       AppDelegate类通过在特定时间点从iOS接收消息来追踪应用程序的状态变化。

       iOS终止一个应用程序时,它会将应用程序占用的所有内存清理干净,从而加快应用程序的关闭速度。这也是为什么AppDelegatedealloc方法中的代码从不运行的原因。此外,手动调用dealloc方法是一个很不好的习惯。如果需要在应用程序终止前运行一些代码,可以将这些代码添加到applicationWillTerminate方法中。如果你的目标系统是iOS4或更高版本,就应将代码添加到applicationDidEnterBackground方法中。

       设备方向

       [[CCDirector sharedDirector]] setDeviceOrientation:

CCDeviceOrientationLandscapeLeft];

       下面列出了设备支持的所有方向:

       1CCDeviceOrientationPortrait

       2CCDeviceOrientationPortraitUpsideDown

       3CCDeviceOrientationLandscapeLeft

4CCDeviceOrientationLandscapeRight

动作间隔

[[CCDirector sharedDirector] setAnimationInterval:1.0/60];

动作间隔决定了cocos2d刷新屏幕的频率,它关乎游戏可以获得的最大帧率。但动作间隔并不等同于每秒刷新多少帧。相反,它表示的是cocos2d刷新一帧所需要的时间。在上面的代码中,动作间隔的参数为1.0/60,这就是cocos2d对屏幕进行连续两次刷新之间的时间间隔。

很多情况下,最好把帧率设置为30fps。这对复杂游戏很有帮助,因为这样做可以避免由于帧率无法达到60fps,而在游戏过程中发生30fps60fps间的大幅波动。在这种情况下,最好把帧率设为可能达到的最低帧率,因为较低但是稳定的帧率可以保证游戏的流畅运行,而平均帧率较高但是帧率可能发生大幅波动的游戏会降低玩家的用户体验。

注意:在iOS设备上不能以高于60fps的帧率进行渲染,因为设备的屏幕刷新率被锁定为最高60fps。如果强迫cocos2d以高于60fps的帧率进行渲染,那么在最好情况下,cocos2d会以60fps的帧率进行渲染;而在最坏情况下,它的帧率反而会下降。所以,如果想让cocos2d以最快速度进行渲染,应把动作间隔参数设为1.0/60

显示帧率

[[CCDirector sharedDirector] setDisplayFPS:YSE];

       启动帧率显示功能以后,在屏幕的左下角会出现一个小小的数字,这就是应用程序的帧率,或者硕士每秒刷新的帧数。

       注意:如果需要调整显示帧率的反应速度,可以在ccConfig.h文件中修改CC_DIRECTOR_FPS_INTERVAL代码行。该文件位于cocos2d Sources/cocos2d中。该值默认为0.1,即在默认情况下,表示帧率的数字会在每秒被刷新10次。如果增大该值,那么小数字就会被刷新得更慢,虽然这个变化不明显,但还是存在的。

       所有节点的基类都是CCNode,它包含一个位置属性,但没有视觉上的显示。它是其他所有节点的父类,包括最基本的CCScene类和CCLayer类。

       CCScene类是一个抽象概念,它仅用于根据对象的像素坐标把对象放置到场景中正确的位置。所以,CCScene节点通常是整个cocos2d场景体系的根节点。

       CCLayer类本身几乎没有什么功能,但它可用于接收触摸和加速计输入。它常被用作CCScene的第一个子节点,因为每个游戏都至少使用触摸输入的功能。

2.3 cocos2d中的内存管理问题

       CCArrayiPhone SDKNSMutableArray类似,但效率比NSMutableArray更高。CCArrayNSMutableArray,还有iPhone SDK中的任何其他集合都会自动地向每一个添加进来的对象发送retain消息,也会对每个要删除的对象发送release消息。所以,这样生成的对象可以一直存在,并保持有效且可访问状态。但是,当它们从集合中删除以后,对象也会被自动释放。

Objective-C的内存管理始终遵循着这两条规则:

1)如果你拥有(通过alloccopyretain得到)一个对象,就必须在用完之后释放它。

2)如果你已经向一个对象发送了自动释放消息,就不该再release它。

2.4改变世界

2.5 你还应该知道的

2.5.1 iOS设备

       当你在iOS设备上进行开发时,需要考虑到设备之间的差异。

2.5.2 关于内存的使用

       当前的iOS设备配有128MB256MB512MBRAM

       2-2设备上配备的内存并非都能使用

配备的内存

可用内存

内存警告阈值

128MB

35~40 MB

20 MB~25 MB

256MB

120 MB~150 MB

80 MB~90 MB

512MB

340 MB~370 MB

260 MB~300 MB

cocos2d可以通过调用一些purge方法来帮助释放掉一些内存。通过在AppDelegateapplicationDidReceiveMemoryWarning方法中调用purgeCachedData方法,cocos2d会尝试释放掉一些不用的内存。

开发时用的设备性能越弱越好,这样可以帮助你尽早找到性能和内存过低的问题。

2.5.3 模拟器

       模拟器的缺点:

       1)不能评估性能

       2)不能评估内存使用量

       3)无法使用iOS设备的所有功能

       4)运行时的表现可能不一样

2.5.4 关于日志

       默认情况下,cocos2d项目会有两个构建配置:调试(Debug)和发布(Release)。它们之间的主要区别是:只有在调试时,某些函数,比如CCLOG才会编译并被游戏代码使用。这是影响调试和发布两个构建配置运行性能的最主要因素。

       注意:

       CCLOG宏对苹果的NSLog方法进行了封装,所以CCLOG只在调试构建时才被编译,在发布构建时被删除。建议在使用NSLog的地方用CCLOG代替,因为日志只是给开发者自己看的。NSLog会让发布的游戏运行很慢,因为它即使在发布构建里也会运行。

分享到:
评论

相关推荐

    cocos2d-x入门讲解

    这个“cocos2d-x入门讲解”课程旨在帮助初学者快速掌握这款强大的跨平台游戏引擎,从而能够利用它创建自己的游戏或应用程序。 一、Cocos2d-x基础 Cocos2d-x是Cocos2d家族的一员,基于C++实现,同时提供了Lua和...

    cocos2d-x入门

    【cocos2d-x入门】:cocos2d-x是一个跨平台的游戏开发框架,由C++编写,同时支持Lua和JavaScript脚本语言。它源于cocos2d,主要用于2D游戏、互动教育应用、演示和其他图形密集型应用程序的开发。在“HelloWorldTouch...

    cocos2d 入门教程

    【cocos2d 入门教程】 cocos2d 是一款强大的开源游戏开发框架,尤其在iOS平台上,它被广泛用于创建2D游戏、演示和其他交互式应用。本教程将带你深入了解cocos2d的基本概念、核心功能以及如何在iOS上进行游戏开发。 ...

    Cocos2d-x入门视频教程(全7讲)

    资源名称:Cocos2d-x入门视频教程(全7讲)资源目录:【】cocos2d-x视频教程_01【】cocos2d-x视频教程_02【】cocos2d-x视频教程_03【】cocos2d-x视频教程_04【】cocos2d-x视频教程_05【】cocos2d-x视频教程_06【】...

    cocos2d-x入门基础

    【cocos2d-x入门基础】教程主要涵盖了在Eclipse中安装C/C++开发插件以支持cocos2d-x游戏框架的开发过程。cocos2d-x是一个跨平台的游戏开发框架,它基于C++实现了cocos2d的API,使得开发者可以用相似的接口在Android...

    cocos2d入门cocos2d入门

    总结来说,cocos2d入门需要掌握环境配置、基本概念、动作和动画的使用,以及如何处理用户输入和适应Retina显示。随着对这些基础知识的深入理解和实践,你将能够逐步创建出自己的cocos2d游戏或应用。

    Cocos2d-JS 快速入门——视频(上部分)

    这个快速入门视频教程系列将引导初学者深入理解Cocos2d-JS,从基础概念到实际操作,一步步构建你的游戏开发技能。 首先,让我们详细解读每个视频文件所涵盖的知识点: 1. **Cocos2d-JS 快速入门01_基础介绍.mp4**...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    1. **Cocos2d-x入门**:介绍Cocos2d-x的基本架构,包括场景(Scene)、层(Layer)、节点(Node)等概念,以及如何设置项目环境,创建和管理游戏资源。 2. **图形与动画**:讲解如何使用Cocos2d-x的绘图API绘制2D...

    cocos2d学习资源汇总

    * csdn的cocos2d-x入门专栏:提供了详细的cocos2d-x入门教程和实践经验。 * cocoaChina上的汇总帖:提供了详细的cocos2d-x开发资源、Api、wiki和开发者博客。 四、视频资源 * YouTube上的cocos2d-x教程视频:提供...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...

    cocos2d-x从入门到精通经典视频-vedio.rar

    【cocos2d-x从入门到精通经典视频-vedio.rar】这个压缩包文件包含了传智教育段誉老师精心制作的cocos2d-x游戏开发入门教程。cocos2d-x是一个开源的游戏开发框架,使用C++语言编写,支持多平台,包括iOS、Android以及...

    cocos2d的学习资料

    这篇学习资料是针对cocos2d/x,特别是cocos2d-x的入门指南,旨在帮助初学者快速掌握这个强大的游戏引擎。 cocos2d-x是一个跨平台的2D游戏开发框架,它可以让你的游戏在iOS、Android、Windows Phone以及其他桌面平台...

    cocos2d初级教程-Cocos2d SimpleGame源码

    Ray Wenderlich的《Cocos2d SimpleGame》,被认为是cocos2d的初学者最好的教程,这本书被Cocos2D-X团队从objective-c转化到了c++版,并发布在了github上。在此感谢Ray Wenderlich的慷慨相助。 源代码是在cocos2d-x ...

    cocos2d-x 跑酷源码

    本文将深入探讨如何利用cocos2d-x开发一款跑酷游戏,通过分析提供的“runningGame”源码,我们将揭示其核心知识点,帮助初学者快速入门并提升对cocos2d-x的理解。 一、项目结构解析 "runningGame"源码项目通常包含...

    Cocos2d-x学习笔记

    下面将详细介绍如何通过Cocos2d-x的官方文档进行入门学习,以及一些基础的开发步骤。 首先,进入Cocos2d-x的官方网站,下载最新的开发包。对于初学者而言,可以先从Windows平台开始学习,因为它的安装配置相对简单...

    Cocos2D Installer 3.1.0.app

    Cocos2D Installer 3.1.0.app是一款专为Xcode设计的工具,用于便捷地集成cocos2d-x 3.x版本到开发环境中。cocos2d-x是一个开源的游戏开发框架,基于C++,并支持多种语言,如Lua和JavaScript。这个3.1.0版本的安装...

    Cocos2d-x 3.X游戏开发入门精解

    《Cocos2d-x 3.X游戏开发入门精解》是一本专为初学者设计的指导书籍,旨在帮助读者快速掌握使用Cocos2d-x 3.X框架进行游戏开发的基本技能。Cocos2d-x是一个开源的游戏开发框架,广泛应用于跨平台游戏开发,支持iOS、...

    learn cocos2d 2

    在入门章节,作者将引导读者通过安装Cocos2d所需的软件和工具来开始学习旅程。这可能包括Xcode环境配置,Cocos2d框架的安装,以及对开发环境的熟悉。此外,该部分还会介绍一些基础概念和术语,使初学者可以快速上手...

    cocos2d-x box2d入门示例

    总的来说,"cocos2d-x box2d入门示例"是一个极好的起点,它将帮助初学者快速掌握这两者结合的使用技巧。通过实践和理解"Box2dTEST2",你不仅能学会基本的物理模拟,还能为更复杂的2D游戏开发打下坚实基础。在学习...

Global site tag (gtag.js) - Google Analytics