`
wangweike
  • 浏览: 66505 次
  • 性别: Icon_minigender_1
  • 来自: Mars
社区版块
存档分类
最新评论

cocos2d-iPhone2

 
阅读更多
1.场景转换
   CCTransitionSlideInB* transition = [CCTransitionSlideInB transitionWithDuration:3 scene:[OtherScene scene]];
[[CCDirector sharedDirector] replaceScene:transition];

   用CCDirector replaceScene方法替换场景, 每个节点都会调用CCNode所带的三个方法:onEnter, onEnterTransitionDidFinish和onExit。

//onEnter,onEnterTransitionDidFinish和onExit方法
-(void) onEnter
{
// 节点调用init方法以后将会调用此方法
// 如果使用了CCTransitionScene,将会在过渡效果开始以后调用此方法 [super onEnter];
}
-(void) onEnterTransitionDidFinish
{
// 调用onEnter以后将会调用此方法
// 如果使用了CCTransitionScene,将会在过渡效果结束以后调用此方法 [super onEnterTransitionDidFinish];
}
-(void) onExit
{
// 节点调用dealloc方法之前将会调用此方法
// 如果使用了CCTransitionScene,将会在过渡效果结束以后调用此方法 [super onExit];
}

    调用次序: init,onEnter、过渡效果
、onExit、onEnterTransitionDidFinish、dealloc。

    取决于是否使用了CCTransitionScene, onEnter和onExit会在场景转换过程中的某个时间点被调用。对于这三个方法, 你必须调用它们的super方法以避免触摸输入问题和内存泄漏的问题。

    可以在场景转换之前或者之后,通过使用上述方法在节点中完成一些特定的操作。因为在程序进入onEnter方法的时候,场景中的所有节点都已经设置完成了;同时,在onExit方法中,所有节点都还存在于内存中。

2.过渡场景,使用自定义的可重用的LoadingScene
   原因:场景的生成其实早于场景过渡效果的开始。所以如果需要在新场景的 init 或者 onEnter 方法中执行很复杂的代码或加载很多 素材的话,过渡效果开始之前就会产生很明显的延迟。
   两个场景之间使用了一个简单的过渡场景用于替换当前场景,然后用最终的目标场景替换这个过渡场景。在这个替换的过程中,cocos2d将会有足够的时间来释放之前场景所占用的内存。 得到的实际效果是:不再会有两个复杂场景同时占用着内存的情况了,因此在场景转换过程中也就减少了出现内存使用高峰的机会。
     不要在一个节点的init方法中调用CCDirector的replaceScene方法。Director无法容忍一个节点在初始化的同时进行场景替换。通过使用scheduleUpdate方法来延缓目标场景对LoadingScene场景的替换。


4.选用CCMultiplexLayer来管理关卡
    CCMultiplexLayer可以同时包含多个节点,但是任意时间里只有一个节点是有效的。缺点是不能在层之间使用过渡效果。因为任意时间里只能有一个层是可视的,所以任何过渡效果都是不可能发生的。
     列:使用CCMultiplexLayer类在不同层之间进行转换 
CCLayer* layer1 = [CCLayer node];
CCLayer* layer2 = [CCLayer node];
CCMultiplexLayer* mpLayer = [CCMultiplexLayer layerWithLayers:layer1, layer2, nil];
//转换到layer2,layer1还是mpLayer的子节点
[mpLayer switchTo:1];
// 转换到layer1,从mpLayer里移除layer2,并且释放layer2占用的内存
// 在使用下述方法以后,你不能够再转换回layer2(索引:1)了
[mpLayer switchToAndReleaseMe:0];

5.CCColorLayer
//添加一层背景色层
CCColorLayer* colorLayer = [CCColorLayer layerWithColor:ccc4(255, 0, 255, 255)];
[self addChild:colorLayer z:0];

6.游戏角色和CCNode的关系:游戏角色中“有一个”CCNode,和对CCNode的逻辑处理。不只“是一个”CCNode。
    最常用来将物体显示在屏幕上的类是CCSprite。但是实际上游戏角色和CCNode类之间的关系是“有一个”的关系。游戏角色类“有一个”CCSprite用于显示它自己。游戏角色类“有一个”CCLabel用于显示它自己。如果使用OpengGL和许多粒子效果,那么角色类就“有一个”粒子效果系统将它自己显示在屏幕上。
    CCSprite和对它的输入处理,角色动画,碰撞检测等等的游戏逻辑之关是被操作关系,而不是紧密的包含后者。
    使用基于NSObject的类作为游戏物体看起来有些奇怪,而且它的好处也只有你在创建大一些项目的时候才会显现出来(小项目可以用基于CCSprite的类)。但是它会让你写出结构更好的代码,也会让单独的游戏元素拥有更加清晰明确的目的。

7.让普通的类接收触摸事件
   除了CCLayer能接收触摸输入事件,还可以通过使用CCTouchDispatcher,让任何类接收触摸事件。需要在类里实现CCStandardTouchDelegate协议或者CCTargetedTouchDelegate协议。
   // 让这个类可以接收定向的触摸事件
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self
priority:-1 swallowsTouches:YES];
//在析构函数中
-(void) dealloc
{
//必须要手动解除预约,不会自动解除
[[CCScheduler sharedScheduler] unscheduleUpdateForTarget:self];

// 必须手动从触摸调度程序中移除这个类
[[CCTouchDispatcher sharedDispatcher] removeDelegate:self];

[super dealloc];
}



6.CCProgressTimer (进度条):
    可以选择圆形,纵向和横向的进度显示。不过进度条不会自己更新自己,必须经常更新进度条的百分比数值来显示进度。

    CCParallaxNode (视差视图):
    “视差”(Parallaxing)是2D游戏中通过让不同层上的图片用不同的速度移动, 来创造视觉深度的方法。前景的图片移动的比背景图片要快。cocos2d有一个特 殊的节点用于实现这个效果.
     CCParallaxNode和生成其它节点的方式是一样的,但是在添加子节点的时候可以传递 parallaRatio参数。这个参数是一个CGPoint类型,用于倍增 CCParallaxNode 的移动。
      一旦子节点被加入 CCParallaxNode中,就不能再修改它们的位置了。只能够在背景的范围内移动,否则背景色就会被显示出来。可以通过添加相同的精灵作为背景来增加背景的覆盖区域。但是如果想拥有无限横向或者纵向滚屏的话,就需要自己写个“视差”系统(parallax system)了。

     CCRibbon(图片链条) CCRibbon节点会生成一系列图片,就像一根链条。连续在指定的点上复制。


     CCMotionStreak(拖尾效果) CCMotionStreak实际上是CCRibbon的一个封装实现。它会让CCRibbon的元素在 你画出它们之后慢慢淡出直至消失。

10.工具类
CGRectContainsPoint

11.播放音乐
在cocos2d里播放音频最好也是最简单的方式是使用SimpleAudioEngine。音频支持不是cocos2d自带的功能;它来自CocosDenshion,和物理引擎一样是cocos2d的第三方插件。
以下代码展示了如何使用SimpleAudioEngine播放音乐和音频:
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"blues.mp3" loop:YES];
[[SimpleAudioEngine sharedEngine] playEffect:@"alien-sfx.caf"]; 

如果播放音乐,MP3是最好的选择。只能一次播放一个MP3背景音乐。从技术上来说,有可能同时播放两个或两个以上的MP3文件,但是只有一个MP3文件可以通过硬件来解码。这样就会导致使用CPU来替其它MP3解码。对于游戏来说,这会给系统造成很大的压力。所以绝大多数情况下不应该同时播放多个MP3文件。

如果播放音效文件的话,建议使用CAF格式。

如果想快速转换音频文件格式,同时改变一些基本的音频设置比如采样率
(sampling rate),建议使用SoundConverter。500KB以下的音频文件转换是免费的,通过以下地址下载SoundConverter:
http://dekorte.com/projects/shareware/SoundConverter/

分享到:
评论

相关推荐

    cocos2d-iphone-2.0.tar.gz

    Cocos2d-iPhone是一个广泛使用的2D游戏开发框架,专为iOS设备(如iPhone和iPad)设计。这个开源项目让开发者能够轻松地创建高质量的游戏、应用和交互式内容,而无需深入理解底层图形和物理编程。"cocos2d-iphone-2.0...

    cocos2d-iphone~cocos2d-html5移植之旅

    #### cocos2d-html5:跨平台的2D游戏开发引擎 cocos2d-html5作为cocos2d家族的一员,是一款基于cocos2d-x API的跨平台、浏览器的2D游戏引擎。它不仅易于学习和使用,还拥有卓越的性能,成为手游开发的首选。对于...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作

    在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其Cocos2d-iPhone版本专为Objective-C编程语言设计。本主题主要关注Cocos2d-iPhone中的“动作”(Actions)机制,这是一个强大的工具,用于创建各种动画效果...

    子龙山人兄弟翻译cocos2d-iphone教程.rar

    这个教程将引领读者深入理解如何利用cocos2d-iphone创建引人入胜的2D游戏。 教程首先会介绍cocos2d-iphone的基本概念和架构,包括场景(Scene)、层(Layer)、精灵(Sprite)以及动作(Action)。场景是游戏的主要...

    cocos2d-iphone 2.1 第一部分

    继续输入cd Cocos2d-iPhone-0.99.5(cd Cocos2d-iPhone-0.99.5为解压的cocos2d文件夹名称)进入cocos2d文件夹中。 4。继续输入./install-templates.sh则打开你文件夹下面的install-templates.sh进行cocos2d的安装。...

    cocos2d-x API中文文档

    文档中提到了Cocos2d-x的API风格,特别是从v3.0-beta2版本开始引入的两阶段构造器和静态`create()`函数。这种设计模式使得在C++中,类的构造过程分为两个阶段:第一阶段是设置成员变量的默认值,第二阶段是在`create...

    Cocos2D-iPhone开发教程

    Cocos2D-iPhone是一款强大的2D游戏开发框架,它为iOS平台提供了丰富的功能和工具,使得开发者可以轻松创建各种游戏和互动应用。本教程旨在引导新手入门,并帮助经验丰富的开发者提升技能。以下是对Cocos2D-iPhone...

    Cocco2D-iPhone-04.rar_Cocco2D iPhone_cocos2d_cocos2d-x_iphone 游戏

    Cocos2D-iPhone是一款基于Objective-C的2D游戏开发框架,它被广泛用于iOS平台上的游戏开发。Cocos2D-iPhone是Cocos2D家族的一部分,Cocos2D还包括了Cocos2D-x,这是一个跨平台的版本,支持iOS、Android、Windows等多...

    知易Cocos2D-iPhone开发教程源代码

    Cocos2D-iPhone是一个广泛使用的2D游戏开发框架,专为iOS平台设计。这个“知易Cocos2D-iPhone开发教程源代码”提供了一套详细的教程,旨在帮助移动开发新手快速入门游戏开发。通过学习这些源代码,开发者可以深入...

    cocos2d-x-3.13.1.zip

    cocos2d-x 是一个开源的游戏开发框架,广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等操作系统。它的3.13.1版本是一个重要的里程碑,提供了诸多改进和优化,使得开发者能够更高效地构建游戏。 一、...

    iOS游戏应用源代码——cocos2d-cocos2d-iphone-extensions.zip

    总之,"cocos2d-cocos2d-iphone-extensions.zip"是学习和研究iOS游戏开发的重要资源,它提供的源代码和扩展不仅帮助开发者深入理解2D游戏开发技术,还能激发新的创意和解决方案,推动游戏开发水平的提升。...

    Cocos2D-iPhone

    Cocos2D-iPhone是 一个开源框架,利用它可以非常容易的在iPhone上开发2D游戏。它提供了物理,精灵(sprites),时差卷轴(parallax scrolling),支持iPhone touch和accelerator等很多功能。

    cocos2d-iphone-1.1-beta cocos2d示例工程

    Cocos2d-iPhone是一个基于OpenGL ES 2.0的2D游戏开发框架,用于iOS平台。1.1-beta版本是该框架的一个早期版本,它提供了丰富的功能和示例,帮助开发者快速创建交互式的游戏和应用程序。这个压缩包包含了一个完整的...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-瞬时动作

    本篇主要关注Cocos2d-iPhone中的动作(Action)系统,特别是瞬时动作(Instant Action)。瞬时动作在Cocos2d中扮演着重要的角色,它们执行后立即完成,不占用任何时间,但可以改变节点(Node)的状态或触发其他动作...

    Cocos2d-iphone 开发教程

    目前已经有超过100款基于Cocos2d-iPhone的游戏在AppStore上发布,其中不乏成功案例,比如StickWars曾一度登上AppStore排行榜榜首,这证明了Cocos2d-iPhone不仅高效而且能够支持复杂的2D游戏开发。 #### 三、Cocos2d...

    cocos2d-iphone 游戏源码

    Cocos2d-iPhone是一个基于C++的开源游戏开发框架,专为iOS平台设计,用于构建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-iphone 游戏源码”压缩包可能包含了使用Cocos2d-iPhone框架开发的一个或多个游戏的...

    cocos2d-iphone开发

    - **定义与作用**:Cocos2D-iPhone是一款专为iOS设备设计的高性能2D游戏开发框架。它支持多种功能,如精灵动画、粒子系统、物理引擎等,使开发者能够快速构建高质量的2D游戏应用程序。 - **特点**: - **高效性**:...

    cocos2d-iphone v3.1.1

    《cocos2d-iphone v3.1.1:打造精彩纷呈的移动游戏开发》 cocos2d-iphone是iOS平台上广受欢迎的游戏开发框架,它的v3.1.1版本代表了这一系列的最新迭代,为开发者带来了更为丰富的功能和优化的性能。这个版本在继承...

    知易Cocos2D-iPhone代码示例源码1-8

    Cocos2D-iPhone是一个广泛使用的开源游戏开发框架,它基于C++和Objective-C实现,专为iOS平台设计。这个框架让开发者能够轻松地创建2D游戏、动态演示和其他交互式应用。"知易Cocos2D-iPhone代码示例源码1-8"包含了从...

    cocos2d-x-2.1.4.zip

    cocos2d-x是一个广泛使用的开源跨平台2D游戏开发框架,其基于cocos2d-iphone,并扩展到支持多种操作系统,如iOS、Android、Windows等。2.1.4版本作为历史的一个节点,它记录了cocos2d-x发展过程中的一个重要阶段,...

Global site tag (gtag.js) - Google Analytics