- 浏览: 1117626 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (349)
- javascript (28)
- objective-c&cocos2d (46)
- 开发备忘及常用java代码 (46)
- core java7学习笔记 (13)
- Mina (7)
- HTML5 (13)
- 系统集成项目管理工程师学习笔记 (10)
- 数据库系统原理学习笔记 (11)
- C++学习笔记 (10)
- C语言学习笔记 (5)
- 数据结构学习笔记 (4)
- 计算机网络原理学习笔记 (3)
- 计算机组成原理学习笔记 (2)
- 软件工程学习笔记 (6)
- 开发工具 (15)
- OSGI学习 (1)
- 学习笔记 (19)
- oracle (3)
- java tv (1)
- web server (5)
- javafx (1)
- 随笔 (8)
- 梦舞集 (4)
- 工作流 (3)
- 程序错误记录 (6)
- Windows (2)
- Linux (4)
- Git (1)
- 企业管理 (2)
- android (1)
- JVM (17)
- box2dweb (1)
- 操作系统学习笔记 (6)
- 英语学习 (1)
- Windows 8 应用商店 (1)
- Go语言 (1)
- docker (1)
- visualVM源码学习 (0)
- MariaDB (0)
- JAVA7 (2)
- 面向对象存储 (0)
- Hibernate (14)
- Spring (3)
- 项目构建 (0)
- 读源码学JAVA (0)
- mybatis (1)
- spring mvc (2)
- Javassist (0)
最新评论
-
白天看黑夜:
Apache Mina Server 2.0 中文参考手册(带 ...
Mina学习笔记二_基础 -
yjph83:
兄弟,你这个解决方案是什么什么啊?我现在遇到个问题跟你类似的! ...
Tomcat 8.0.11 移动端访问报400错误问题 -
comedsh:
你好,我也想为开源的做点事情,想让 tomcat-redis- ...
利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法 -
bsr1983:
这个应该是浏览器内部设置的,你可以在Android上试一下别的 ...
javascript学习笔记八 -
787250527:
bsr1983 写道该值是浏览器内部的一个变量,只读的,不可修 ...
javascript学习笔记八
第5章 游戏组件
5.1 使用多个场景
5.1.1 添加多个场景
CCNode有三个方法,使用CCDirector的replaceScene方法替换场景时,每个节点都会调用这三个方法。
onEnter与onExit方法在场景改变过程中的特定时刻被调用,这取决于是否使用CCTransitionScene。必须总是调用这些方法的超类实现了避免输入问题和内存泄露。
注意:
如果在onEnter方法中不调用超类实现,新场景不会对触摸输入或加速计输入作出响应。如果在onExit方法中不调用超类实现,当前场景就不会从内存中释放。有必要强调这一点,因为这些已被忘记,且造成的后果不会使人联想到与它们有关。
与在节点的init或dealloc方法中编写相同的代码不同的是,在onEnter方法被执行时场景已经完全建立好,而在onExit方法被执行时场景仍然包含所有的节点。
注意,最后一个被调用的方法是FirstScene的dealloc方法。这意味着在onEnterTransitionDidFinish方法执行的过程中,前一个场景仍然在内存中。这时如果要创建内存密集型节点,就需要指定选择器在进行内存分配钱至少等待一帧以保证前一个场景已从内存中释放,或者在前一个场景的onExit方法中释放尽可能多的内存。
5.1.2 正在加载下一段,请做好准备
提示:
将enum的第一个值设为无效值(INVALID)是很好的做法,除非你希望将第一个值设为默认值。Objective-C中变量的值会自动被初始化为0,指定了其他值的情况除外。
注意:
为何不直接在init方法中调用replaceScene呢?关于这点有两条规则。规则一:永远不在节点的init方法中调用CCDirector的replaceScene方法。规则二:遵守第一条规则。原因:程序会崩溃。Director无法应付一个正被初始化的节点中替换场景的情况。
5.2 使用多个层
5.2.1 实现关卡的最佳方法
在cocos2d中有两种方法,要么使用场景实现关卡,要么使用独立的层来管理不同的关卡。
1.使用场景
实现关卡最直接的方法就是将每一关作为单独的场景来管理。你可以为关卡创建一个新的Scene类,或者初始化一个公用的LevelScene类,并将关卡号或其他必要信息作为参数传入来加载相应的关卡数据。
在以下情况使用这种方法最为合适:关卡之间相互独立(上一关中发生的事与下一关无关);玩家晋级时只需保存玩家的得分和剩余生命数;用户界面纯粹用来显示信息,也许除了一个暂停按钮外就没有任何交互元素了。
2.使用层
如果用户界面复杂且在关卡改变时不能被重置,或者希望换关时保持玩家和其他游戏对象不变,那么推荐在同一场景中使用单独的层加载并显示关卡。
对于游戏中的隐藏对象,或者需要不断从一间屋子进入另一间屋子的冒险类游戏来说,使用层也许是理想的解决方案,尤其是对于需要在用户界面下使用移入或移出动画替换关卡内容的情景。
5.2.2 CCColorLayer
cocos2d提供CCColorLayer用于改变背景色,用法如下:
CCColorLayer* colorLayer=[CCColorLayer layerWithColor
:ccc4(255,0,255,255)];
使用OpenGL可以得到同样的效果:
glClearColor(1,0,1,1);
但请先测试一下游戏的场景过渡,因为改变glClearColor会对场景过渡产生不利影响。举例来说,当使用CCFadeTransition时,不管使用什么颜色初始化CCFadeTransition,透明色最终都会完全显现出来。
5.3 从CCSprite类继承游戏对象
游戏对象常常需要实现其自身的逻辑。这样一来,为每种游戏对象创建单独的类就显得很有意义。这包括玩家角色、各色敌人、子弹、导弹、平台和其他任何单独放置于游戏场景中并执行独立逻辑的对象。
5.4 使用CCSprite复合游戏对象
创建一个新的类,使其派生自Objective-C的基础类NSObject而不是之前的CCNode类。
5.5 奇妙的CCNode派生类
5.5.1 CCProgressTimer
进度计时器适用于任何类型的进度显示,如显示进度条或是使图标变回有效。进度计时器使用一个精灵,并基于百分比,只使一部分的到显示来表现进度特征。
timer.type是定义在CCProgressTimer.h头文件中的CCProgressTimeType枚举类型。有三种类型的进度计时器可供选择,分别是径向、纵向和横向。但这里有一点要警惕:计时器不会更新它自己。
5.5.2 CCParallaxNode
视差通常用于2D游戏,它通过将不同层次的图像以不同速率运动来得到景深效果。前景图像比背景图像的移动速度快。cocos2d中有专门的节点用于创建视差效果。
创建CCParallaxNode节点的步骤与其他类型节点无异,但在向其添加子节点时使用了特殊的初始化器。这里的parallaxRatio参数属于CGPoint类型,它是CCParallaxNode中任何移动的乘数因子。
注意:
一旦将子节点添加到CCParallaxNode之后,就不能修改子节点的位置了。最底层的图像滚动到尽头会露出下面的背景。修改CCMoveBy动作使CCParallaxNode移动更远一点,就可以看到这个现象。要增加滚动的距离,可以添加更多相同精灵并设置合适的偏移。但如果要求单向或双向无限滚动,就必须实现自己的视差系统。
5.5.3 CCRibbon
CCRibbon节点使用一队图像创建链状效果。
配合使用触摸输入,CCRibbon类可以实现热门游戏中的画线效果。值得注意的是,CCRibbon不支持移除单个点,只能将整个CCRibbon作为子节点从其父节点中移除。CCRibbon初始化器中的宽度和高度参数决定了单个ribbon元素的尺寸。
5.5.4 CCMotionStreak
本质上讲,CCMotionStreak相当于CCRibbon的一个封装。使用它可以使CCRibbon已显示的元素表现出不同程度的淡出效果。
CCMotionStreak的用法类似与CCRibbon,但现在CCRibbon已称为CCMotionStreak的一个属性。其中的fade参数指明ribbon元素淡出的速度:数字越小,消失得越快。而minSeg参数貌似没有明显的效果,尽管将它设为负值时会出现有趣的图像错误。
<!--EndFragment-->
发表评论
-
[转]解决 Xcode 删除文件后 missing file 警告
2014-03-19 18:19 1129转自:http://www.oschina.net/ques ... -
CocoStudio简介
2014-03-05 19:19 1412一、概述 1.1.功能简介 CocoS ... -
xcode5预览版下载地址
2013-06-16 09:56 22211.xcode5预览版下载地址 http://adcdo ... -
解决提交应用到AppStore时,提示UUID及UIDevice错误
2013-06-04 03:34 22621.如果使用了Admob,更新到最新版本6.4.2,删除Add ... -
解决Could not instantiate class named NSLayoutConstraint
2013-02-17 10:22 1422点击xib或storyboard文件,在右边的 inspect ... -
objective-c的arc项目中使用不支持arc的依赖库时编译错误的解决
2013-02-06 14:04 1166在Target->build phases->Co ... -
xcode4.6下载地址
2013-02-04 12:08 3092http://adcdownload.apple.com/De ... -
Mac上的DMG与ISO互转
2013-01-14 14:59 11661.把DMG转为ISO hdiutil convert /p ... -
设置ios中DatePicker的日期为中文格式
2012-12-18 18:12 72451.在模拟器中的“设置”-“通用”-“多语言环境”-“语言”设 ... -
Xcode 错误- Could not launch app - No such file or directory Error.
2012-12-14 11:50 1848通常发生在联机调试过程中,新旧工程交替测试 解决方 ... -
UIPickerView控件中自定义显示的字体大小及样式
2012-12-14 00:21 17784通过覆盖如下方法实现 - (UIView *)pickerV ... -
Flurry analytics SDK集成步骤及功能简介
2012-12-13 11:48 15388Flurry analytics SDK集成步骤及功能 ... -
Xcode4中显示“Line Numbers”行号
2012-12-11 10:46 1123Xcode4中显示“Line Numbers”行号 1 ... -
ios代码备忘
2012-12-09 00:23 14511.自定义导航栏返回按钮 self.navigationIt ... -
iOS OpenSource Library Collection
2012-12-07 17:45 1347转自:http://www.cppblog.com/inkcp ... -
ios内置付费IAP校验
2012-12-07 15:50 1582参考链接:http://developer.apple.com ... -
ios应用中集成多盟广告墙
2012-12-06 16:59 35491.下载广告墙SDK最新版 ... -
ios 导航栏、工具栏、tab栏图标大小
2012-12-06 16:50 11286工具栏和导航栏上的图标尺寸应如下所示: 对于iPhoe和iP ... -
【转】Google Admob 广告最佳做法
2012-11-13 15:40 6572转自:https://developers.google.co ... -
【转】Google AdMob 广告 iOS 初级指南
2012-11-13 15:37 1527转自:https://developers.google.co ...
相关推荐
本教程涵盖从基础到进阶的cocos2d游戏开发全过程,共13章节,旨在帮助开发者快速掌握这一强大的游戏引擎。 第一章:入门介绍 本章首先会介绍cocos2d的历史、特性以及它在游戏开发中的应用。然后,会引导初学者安装...
在这个名为“小鸟闯管道”的2D小游戏项目中,我们能够深入理解CocosCreator的核心功能,包括其丰富的组件系统、JavaScript脚本的运用以及2D游戏设计的基本理念。 首先,CocosCreator 2.3.1版本引入了许多优化和新...
这个“cocos2d游戏实例完整代码”提供了从基础到进阶的游戏开发实践,是初学者深入理解cocos2d框架的理想资源。 在iOS游戏开发中,cocos2d引擎扮演着核心角色,它包含了场景(Scene)、层(Layer)、精灵(Sprite)...
Cocos2D是一款广泛用于开发2D游戏、动画以及其他图形互动应用的开源游戏引擎,尤其在iOS平台上得到了广泛应用。这个“Cocos2D简单游戏”项目涵盖了多个关键知识点,包括瓦片地图(Tile Map)、精灵(Sprites)的匀速...
xxxxx【Cocos2d游戏开发之七】在cocos2d中添加系统组件,并解决View设置透明会影响View中的其他组件的问题! http://blog.csdn.net/xiaominghimi/article/details/6704898
《cocos2d游戏开发电子书超清》是一本针对初学者的游戏开发指南,专注于cocos2d框架的使用。cocos2d是一款强大的、开源的2D游戏引擎,广泛应用于iPhone游戏开发以及移动平台的其他应用开发。本书旨在帮助读者快速...
《iPhone & iPad cocos2d游戏开发实战完整版》是一本专为iOS平台上的游戏开发者编写的实战指南。这本书深入浅出地介绍了如何使用cocos2d框架来创建高性能、交互性强的游戏应用程序。cocos2d是一款强大的开源游戏开发...
《iPhone & iPad cocos2d游戏开发实战》是介绍Cocos2d游戏编程和开发技术的书籍,介绍了使用Cocos2d中oc中相关的基础知识、简例游戏,游戏组件、粒子效果、地图、物理引擎和如何制作一个完整的游戏还有游戏发布到App...
在cocos2d游戏开发中,ScoreView是一个重要的组件,它通常用于显示玩家的游戏得分或者其他相关的统计信息。本文将深入探讨如何在cocos2d框架中利用第三方类来实现一个具有滑动效果的ScoreView。 首先,让我们了解...
《iPhone&iPad cocos2d游戏开发实战》这本书深入浅出地介绍了在苹果移动设备上使用cocos2d框架进行游戏开发的技术与实践。cocos2d是一个强大的、开源的游戏开发库,尤其适合初学者和有一定编程基础的开发者,用于...
这个“Cocos2d游戏开发教程(iOS5)”涵盖了在iOS平台上使用Cocos2d进行游戏开发的全面知识,对于想要踏入游戏开发领域的开发者来说是一份宝贵的资源。 在iOS5的时代,Cocos2d-iOS是Cocos2d的一个分支,它为开发者...
CocosCreator是一款强大的2D游戏开发引擎,它提供了丰富的工具集和组件系统,使得开发者能够高效地构建游戏和交互式应用。在CocosCreator中,日历组件是实现时间选择功能的重要元素,尤其在涉及到日期相关操作的游戏...
Cocos2d是一款广泛应用于2D游戏开发的开源引擎,它提供了丰富的功能和高效的性能,使得开发者可以轻松创建各种类型的游戏,包括找茬游戏。 找茬游戏的核心在于比较两幅图像之间的差异,并允许用户触摸屏幕指出这些...
本教程将深入探讨Cocos2D游戏开发的核心概念和技术,旨在帮助新手更好地理解和掌握游戏编程。 一、Cocos2D简介 Cocos2D是一个跨平台的游戏引擎,支持iOS、Android、Windows等操作系统。它采用Python、Objective-C、...
这份“史上最全android cocos2d游戏源码大全”是一份宝贵的资源,适合Android游戏开发初学者深入理解游戏引擎的运作机制和最佳实践。 一、Cocos2d-x框架介绍 Cocos2d-x是跨平台的2D游戏开发框架,用C++编写,支持...
《iOS 5 cocos2d游戏开发实战》这本书深入探讨了在iOS 5平台上利用Cocos2d框架进行2D游戏开发的技术与实践。Cocos2d是一款强大的、开源的、跨平台的游戏开发库,尤其适合于创建具有复杂动画效果和交互性的2D游戏。 ...
这个框架以其高效、易用和跨平台的特性,为游戏开发者提供了强大的工具集,帮助他们快速创建2D游戏、应用程序和交互式内容。 标题中的“cocos2d游戏引擎”是指cocos2d的核心功能——一套用于构建2D游戏的软件开发...
Cocos2d-js是一款强大的2D游戏开发框架,它基于JavaScript,使得开发者可以在浏览器环境中或者使用HTML5技术构建高性能的游戏。"cocos2d-js弹窗组件"是这个框架的一个重要组成部分,它提供了方便易用的弹窗功能,极...