zoukankan      html  css  js  c++  java
  • cocos2dx 音乐与音效

    include "HelloWorldScene.h"  
    #include "SimpleAudioEngine.h"  
      
    using namespace cocos2d;  
    using namespace CocosDenshion;  
      
    //根据不同平台使用预编译索引不同音频文件  
    #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)  
    #define EFFECT_FILE "effect2.ogg"  
    #elif (CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE)  
    #define EFFECT_FILE "effect1.raw"  
    #else  
    #define EFFECT_FILE  "effect1.wav"  
    #endif  
      
    #if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)  
    #define MUSIC_FILE  "music.mid"  
    #elif(CC_TARGET_PLATFORM == CC_PLATFORM_BLACKBERRY)  
    #define MUSIC_FILE "background.ogg"  
    #else  
    #define MUSIC_FILE "background.mp3"  
    #endif  
      
    std::string items[] = {"播放背景音乐" ,"停止背景音乐" ,"暂停背景音乐" ,"继续播放背景音乐" ,"后退背景音乐" ,"背景音乐是否正在播放", "播放音效", "重复播放音效"  
        ,"停止音效播放", "释放音效" ,"增加背景音乐音量" ,"减少背景音乐音量" ,"增加音效音量" ,"减少音效音量","暂停音效 ","继续播放音效" ,"暂停所有音效" ,"继续所有音效"  
        ,"停止所有音效"};  
      
    CCScene* HelloWorld::scene()  
    {  
        CCScene *scene = CCScene::create();  
        HelloWorld *layer = HelloWorld::create();  
        scene->addChild(layer);  
        return scene;  
    }  
      
    bool HelloWorld::init()  
    {  
        if ( !CCLayer::init() )  
        {  
            return false;  
        }  
      
        CCMenu* m_pItmeMenu = CCMenu::create();  
          
        CCSize s = CCDirector::sharedDirector()->getWinSize();  
          
        int m_nTestCount = sizeof(items)/sizeof(items[0]);  
          
        for(int i = 0; i < m_nTestCount; i++)  
        {  
            CCLabelTTF* label = CCLabelTTF::create(items[i].c_str(), "Arial", 15);  
              
            CCMenuItemLabel* pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(HelloWorld::menuBack));  
              
            pMenuItem->setPosition(CCPointMake(s.width*0.5, s.height - 20 - (i+1)*15));  
              
            m_pItmeMenu->addChild(pMenuItem, i);  
              
        }  
        m_pItmeMenu->setPosition(CCPointZero);  
          
        addChild(m_pItmeMenu, 0 , 100);  
          
        //预加载音乐和音效  
        SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_FILE));  
        SimpleAudioEngine::sharedEngine()->preloadEffect(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(EFFECT_FILE));  
        //设置默认音量  
        SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5);  
        SimpleAudioEngine::sharedEngine()->setEffectsVolume(0.5);  
          
          
          
        return true;  
    }  
      
    //回调函数  
    void HelloWorld::menuBack(cocos2d::CCObject *pSender)  
    {  
        CCMenuItem* pMenuItem = (CCMenuItem*) pSender;  
          
        int nIdx = pMenuItem->getZOrder(); //得到z轴坐标  
          
        switch (nIdx) {  
            case 0:  
                //播放背景音乐  
                SimpleAudioEngine::sharedEngine()->playBackgroundMusic(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_FILE)).c_str(), true);  
                break;  
            case 1:  
                //停止背景音乐  
                SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();  
                break;  
            case 2:  
                //暂停背景音乐  
                SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();  
                break;  
            case 3:  
                //继续播放背景音乐  
                SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();  
                break;  
            case 4:  
                //后退背景音乐  
                SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();  
                break;  
            case 5:  
                //背景音乐是否正在播放  
                if(SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying())  
                {  
                    CCLOG("背景音乐正在播放");  
                }else{  
                    CCLOG("背景音乐没有在播放");  
                }  
                break;  
            case 6:  
                //播放音效,并且得到此音效的ID  
                effectID = SimpleAudioEngine::sharedEngine()->playEffect(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(EFFECT_FILE)).c_str());  
                CCLOG("音效ID是%d",effectID);  
                break;  
            case 7:  
                //重复播放音效,并且得到此音效的ID  
                effectID = SimpleAudioEngine::sharedEngine()->playEffect(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(EFFECT_FILE)).c_str(),true );  
                CCLOG("音效ID是%d", effectID);  
                break;  
            case 8:  
                //停止播放音效  
                SimpleAudioEngine::sharedEngine()->stopEffect(effectID);  
                break;  
            case 9:  
                //释放音效  
                SimpleAudioEngine::sharedEngine()->unloadEffect(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(EFFECT_FILE)).c_str());  
                break;  
            case 10:  
                //增加背景音乐音量  
                SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume() + 0.1f);  
                break;  
            case 11:  
                //减少背景音乐音量  
                SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume() - 0.1f);  
                break;  
            case 12:  
                //增加音效音量  
                SimpleAudioEngine::sharedEngine()->setEffectsVolume(SimpleAudioEngine::sharedEngine()->getEffectsVolume() + 0.1f);  
                break;  
            case 13:  
                //减少音效音量  
                SimpleAudioEngine::sharedEngine()->setEffectsVolume(SimpleAudioEngine::sharedEngine()->getEffectsVolume() - 0.1f);  
                break;  
            case 14:  
                //暂停音效  
                SimpleAudioEngine::sharedEngine()->pauseEffect(effectID);  
                break;  
            case 15:  
                //继续播放音效  
                SimpleAudioEngine::sharedEngine()->resumeEffect(effectID);  
                break;  
            case 16:  
                //暂停所有音效  
                SimpleAudioEngine::sharedEngine()->pauseAllEffects();  
                break;  
            case 17:  
                //继续所有音效  
                SimpleAudioEngine::sharedEngine()->resumeAllEffects();  
                break;  
            case 18:  
                //停止所有音效  
                SimpleAudioEngine::sharedEngine()->stopAllEffects();  
                break;  
        }  
    }  
  • 相关阅读:
    在VMWare的虚拟机中设置共享文件夹(Linux-Ubuntu系统)
    得到cell视图
    推送
    常用框架
    截屏
    多线程枷锁
    java与IOS的交互
    缓存机制
    iOS数据库操作(使用FMDB)
    插入排序
  • 原文地址:https://www.cnblogs.com/jiackyan/p/3042595.html
Copyright © 2011-2022 走看看