`
zhangziyangup
  • 浏览: 1187125 次
文章分类
社区版块
存档分类
最新评论

cocos2d学习笔记(五)CCMenu与CocosDenshion

 
阅读更多

一、CCMenu

游戏中的菜单必不可少,CCMenu正是你想要的。

要创建CCMenu,你必须有CCMenuItem对象,CCMenuItem便是你菜单中的某个选项,可以为图片、文字等

cocos2d为menu item提供了必要的转换方法,比如CCMenuItemLabel你可以通过CCLabelBMFont得到;游戏中某些开关,比如声音开关可以用CCMenuItemToggle对象

每一个CCMenuItem都可以在创建的时候绑定某个对象的方法,当这个CCMenuItem被点击的时候会触发这个方法


二、CocosDenshion

cocos2d中集成了CocosDenshion,不过游戏中我们一般都是整个背景音乐或者来点音效,所以我们只需要用SimpleAudioEngine就可以了。

SimpleAudioEngine其实是对CDAudioManager进行了一些封装,我们暂时不去关注细节实现,先看看怎么使用

这是一段通用的代码,用来确保建立SimpleAudioEngine对象成功

    // Indicate that we are trying to start up the Audio Manager
    [CDSoundEngine setMixerSampleRate:CD_SAMPLE_RATE_MID];
    
    //Init audio manager asynchronously as it can take a few seconds
    //The FXPlusMusicIfNoOtherAudio mode will check if the user is
    // playing music and disable background music playback if 
    // that is the case.
    [CDAudioManager initAsynchronously:kAMM_FxPlusMusicIfNoOtherAudio];
    
    //Wait for the audio manager to initialise
    while ([CDAudioManager sharedManagerState] != kAMStateInitialised) 
    {
        [NSThread sleepForTimeInterval:0.1];
    }
    
    //At this point the CocosDenshion should be initialized
    // Grab the CDAudioManager and check the state
    CDAudioManager *audioManager = [CDAudioManager sharedManager];
    if (audioManager.soundEngine == nil || 
        audioManager.soundEngine.functioning == NO) {
        CCLOG(@"CocosDenshion failed to init, no audio will play.");
        managerSoundState = kAudioManagerFailed; 
    } else {
        [audioManager setResignBehavior:kAMRBStopPlay autoHandle:YES];
        soundEngine = [SimpleAudioEngine sharedEngine];
        managerSoundState = kAudioManagerReady;
        CCLOG(@"CocosDenshion is Ready");
    }

当对象成功创建以后,便可以使用这个对象了,预加载的过程会hang住程序,所以不要在主线程中进行声音的预加载

[soundEnginepreloadBackgroundMusic:trackFileName];

[soundEngineplayBackgroundMusic:trackFileNameloop:YES];

[CDSoundEngine setMixerSampleRate:CD_SAMPLE_RATE_MID];
设置采样率,可以在CocosDenshion.h中看到各种采样率的宏定义,可以根据自己的声音文件来设置,注意:当你声音文件低于设置的采样率时,会使用设置的采样率而产生内存的浪费。

    [CDAudioManager initAsynchronously:kAMM_FxPlusMusicIfNoOtherAudio];
共有这几种模式:

kAMM_FxOnly,//!Other apps will be able to play audio

kAMM_FxPlusMusic,//!Only this app will play audio

kAMM_FxPlusMusicIfNoOtherAudio,//!If another app is playing audio at start up then allow it to continue and don't play music

kAMM_MediaPlayback,//!This app takes over audio e.g music player app

kAMM_PlayAndRecord//!App takes over audio and has input and output

都很好懂,就不一一翻译了



分享到:
评论

相关推荐

    cocos2d 学习笔记

    本学习笔记将深入探讨cocos2d的核心概念、关键组件以及实际应用技巧。 一、cocos2d基本概念 1. Scene(场景):cocos2d中的基本构造单元,代表游戏或应用的一个完整状态,例如主菜单、游戏关卡等。 2. Layer(层)...

    Cocos2d-x学习笔记

    在学习Cocos2d-x的过程中,新手首先需要了解其基本概念和安装配置过程。下面将详细介绍如何通过Cocos2d-x的官方文档进行入门学习,以及一些基础的开发步骤。 首先,进入Cocos2d-x的官方网站,下载最新的开发包。...

    cocos2d-x学习笔记

    《cocos2d-x学习笔记》 在学习cocos2d-x时,了解其核心组件和工作流程至关重要。AppDelegate是cocos2d-x框架中的一个关键类,它扮演着应用程序入口点的角色,处理应用程序的生命周期事件。让我们深入探讨...

    cocos2d学习资源汇总

    cocos2d-x学习资源汇总 cocos2d-x是一款功能强大且广泛应用于游戏开发的游戏引擎,由于其跨平台、开源、自由的特性,吸引了许多开发者的关注。以下是关于cocos2d-x的学习资源汇总,旨在帮助初学者快速入门和提高...

    cocos2d的学习资料

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

    【吼吼睡cocos2d学习笔记】第七章 - 4个很酷的类 代码

    通过阅读提供的"吼吼睡cocos2d学习笔记"第七章,你将能够深入理解这些类的工作原理,学习如何在实际项目中应用它们。同时,提供的CH07.xcodeproj文件可能是包含示例代码的工程,可以帮助你直接在Xcode环境中运行和...

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

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    Cocos2D-X开发学习笔记-渲染框架之布景层类的使用示例

    本篇学习笔记主要聚焦于Cocos2D-X的渲染框架,特别是布景层类的使用,这对于构建游戏场景至关重要。 首先,我们要理解Cocos2d-x中的“布景层”(CCLayer)。在Cocos2D-X中,布景层是场景(CCScene)的一个子类,...

    Cocos2d-x学习笔记——完全掌握C++ API与游戏项目开发.zip

    本学习笔记旨在帮助开发者全面掌握Cocos2d-x的C++ API以及游戏项目的开发流程。 一、Cocos2d-x框架基础 Cocos2d-x是Cocos2d-x系列的C++版本,它提供了丰富的图形绘制、动画制作、音频播放、物理引擎等功能。Cocos2d...

    cocos2d-x json字符串与cocos2d::Value转换工具

    该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...

    Cocos2D-X2.2.3学习笔记3(内存管理)

    本笔记将深入探讨Cocos2D-X中的内存管理策略,主要包括对象生命周期、内存分配与释放、引用计数以及智能指针的使用。 1. 对象生命周期:在Cocos2D-X中,每个对象都有其创建、使用和销毁的生命周期。当你创建一个...

    cocos2d-x-cocos2d-x-2.2.2.zip

    总的来说,cocos2d-x 2.2.2是一个功能完备、易于学习和使用的2D游戏开发框架。通过深入理解并掌握这个版本,开发者可以创建出运行在多种平台上的高质量游戏,享受到cocos2d-x带来的强大开发体验。无论是初学者还是...

    cocos2d-x windows vs2010配置

    接下来,把 F:\cocos2d-1.0.1-x-0.9.1\cocos2dx 和 F:\cocos2d-1.0.1-x-0.9.1\CocosDenshion 这两个文件夹里面的全部内容拷贝一份到 D:\cocos2d-xProjects\HelloWorld 中去。 九、设置静态链接库 接下来,打开 F:\...

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

    《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...

    cocos2d-android jar包全套.zip

    4. **Java-bindings.jar**:这是Cocos2d-x与Java之间的桥梁,使得开发者可以用Java编写游戏逻辑。 在Android Studio项目中,你需要将这些jar包导入到项目的`libs`目录下,并在`build.gradle`文件中配置依赖,这样...

    cocos2d-x学习笔记\cocos2d-x学习笔记(17)--简单游戏实例1--双枪手

    《cocos2d-x学习笔记(17)--简单游戏实例1--双枪手》 cocos2d-x是一款跨平台的2D游戏开发框架,基于C++,支持iOS、Android、Windows等多个操作系统。本笔记主要讲解如何使用cocos2d-x创建一个简单的双枪手游戏实例,...

    Cocos2D-X开发学习笔记-触屏事件使用示例

    本学习笔记将深入探讨如何在Cocos2D-X中处理触屏事件,让游戏能够响应用户的触摸操作。 首先,我们要了解Cocos2D-X中的触摸事件处理机制。在Cocos2D-X中,触屏事件主要通过`Touch`类和`TouchEvent`类来实现。`Touch...

    cocos2d-android.jar.zip_CoCos2d_android jar_android game_cocos2d

    cocos2d-android游戏引擎是著名游戏引擎cocos2d游戏引擎的Android版。cocos2d-android游戏引擎性能优越、易学、可以进行纯java编程、具有极高的研 究价值、大大的降低了开发者的学习成本。您只需要一台普通配置的...

    cocos2d-x API中文文档

    这份API文档不仅提供了关于Cocos2d-x的基本信息,还深入到具体的技术细节,对于学习和使用cocos2d-x开发游戏的开发者来说,是非常宝贵的参考资料。通过这份文档,开发者可以了解如何利用cocos2d-x的API构建游戏场景...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    在学习和使用cocos2d-x 3.8时,开发者需要注意与最新版本的差异,例如API的变化、新功能的缺失等。同时,由于3.8是旧版本,可能不再受到官方的维护和支持,所以在解决特定问题时可能需要查阅旧的文档或社区论坛。 ...

Global site tag (gtag.js) - Google Analytics