• cocos2dX 音乐和声音效果


    今天, 我们学习cocos2dX里面音乐音效, 为什么学他呢, 难道你喜欢看无声电影( 旁白: 我就喜欢关着声音玩), 我们不要管旁白了, 她是个疯子


    老规矩, 资源准备好:

    一首<故宫神思>作为背景音乐, 话说我最喜欢这样的调调了, 一个hit.mp3作为背景音效, 话说我百度了好久都没找到其它格式的音效, 将就使用mp3的了, 嘿嘿大笑



    嗯, 对了, 先来看看音乐和音效的差别吧:

    音乐通常是歌曲, 用来作为背景声音的, 音效一般比較短促, 用来作为打斗效果时或者按下的时候的短促声音

    我们来看看经常使用的函数有哪些:


    音乐MUSIC:

    preloadBackgroundMusic( 音乐文件);                 //载入音乐

    playBackgroundMusic( 音乐文件, bool);     //播放音乐, true代表循环播放, false代表不循环

    pauseBackgroundMusic()                                   //暂停

    resumeBackgroundMusic()                               //继续

    stopBackgroundMusic()                                       //停止

    rewindBackgroundMusic()                                 //从头播放

    isBackgroundMusicPlaying()                             //是否正在播放

    setBackgroundMusicVolume()                            //设置音量

    getBackgroundMusicVolume()                           //获取音量


    音效EFFECT:

    额, 这个和音乐的差点儿相同, 我能不把列出来吗?可怜

    还是列出来吧, 我就不凝视了, 应该没问题

    preloadEffect( 音效文件)

    unloadEffect( 音效文件)

    playEffect( 音效文件, 是否反复)

    stopEffect( 音效ID)

    stopAllEffects() 

    pauseEffect( 音效ID)

    pauseAllEffects()

    resumeEffect( 音效ID)

    resumeAllEffects() 

    getEffectsVolume()

    setEffectsVolume() 


    嗯, 貌似就差点儿相同了, 我们開始写代码吧:

    头文件, 我们写几个回调函数用来控制音乐:

    void playMusicCallback(CCObject* pSender);		//播放背景音乐
    	void pauseMusicCallback(CCObject* pSender);		//暂停背景音乐
    	void recoverMusicCallback(CCObject* pSender);	//恢复背景音乐
    	void stopMusicCallback(CCObject* pSender);		//停止背景音乐



    cpp文件:

    我们创建四个菜单button, 用来控制声音:

    //创建四个菜单button
    	CCMenuItemFont* playBG = CCMenuItemFont::create( "play", this, menu_selector( HelloWorld::playMusicCallback));
    	CCMenuItemFont* pauseBG = CCMenuItemFont::create( "pause", this, menu_selector( HelloWorld::pauseMusicCallback));
    	CCMenuItemFont* recoverBG = CCMenuItemFont::create( "recover", this, menu_selector( HelloWorld::recoverMusicCallback));
    	CCMenuItemFont* stopBG = CCMenuItemFont::create( "stop", this, menu_selector( HelloWorld::stopMusicCallback));
    
    	CCMenu* pMenu2 = CCMenu::create( playBG, pauseBG, recoverBG, stopBG, NULL);
    	pMenu2->setPosition( ccp( visibleSize.width / 2, visibleSize.height / 2));
    	pMenu2->alignItemsVertically();
    	addChild( pMenu2);



    载入音乐文件, 而且设置默认音量:

    	SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic( "palaceMemories.mp3");		//载入背景音乐
    	SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume( 1.0);						//设置默认背景音量



    我们来实现四个回调函数:

    分别播放背景音乐, 暂停背景音乐, 恢复背景音乐, 停止背景音乐, 嗯, 每一个回调函数里面另一个播放音效的, 点击一次菜单, 就会播放一次

    void HelloWorld::playMusicCallback(CCObject* pSender)
    {
    	SimpleAudioEngine::sharedEngine()->playBackgroundMusic( "palaceMemories.mp3");
    	{
    		//播放音效
    		SimpleAudioEngine::sharedEngine()->playEffect( "hit.mp3");
    	}
    }
    
    void HelloWorld::pauseMusicCallback(CCObject* pSender)
    {
    	SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
    	{
    		//播放音效
    		SimpleAudioEngine::sharedEngine()->playEffect( "hit.mp3");
    	}
    }
    void HelloWorld::recoverMusicCallback(CCObject* pSender)
    {
    	SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
    	{
    		//播放音效
    		SimpleAudioEngine::sharedEngine()->playEffect( "hit.mp3");
    	}
    }
    void HelloWorld::stopMusicCallback(CCObject* pSender)
    {
    	SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
    	{
    		//播放音效
    		SimpleAudioEngine::sharedEngine()->playEffect( "hit.mp3");
    	}
    }



    我们来看看效果:


    事实上也看不见什么效果, 额 仅仅有看看右下角的音量标志证明她在播放了, 今天的代码非常easy, 希望大家写一下, 看看效果, 有不明确的地方能够进群讨论:223856254

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Mybatis动态数据源
    [Java基础]判断字符串指定字符类型
    [Java基础]让Map value自增
    (转载)UTF-8占几个字符
    JVM程序计数器
    Mybatis异常总结
    通过类对象来获取类中的属性,方法,构造器
    主动引用和被动引用
    ClassLoader类加载器浅见
    反射----获取class对象的五种方法
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4670295.html
Copyright © 2020-2023  润新知