cocos2dx 音樂與音效


//根據不同的平台使用的預編譯索引不同音頻文件
#if   (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#define EFFECT_FILE   "effect2.ogg"
#elif (CC_TARCET_PLATFORM == CC_PLATFORM_MARMALADE)
#define EFFECT_FILE   "effect1.raw"
#else
#define EFFECT_FILE   "effect1.wav"
#endif

#if (CC_TARGET_PLATEFOM == 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()
{
    // 'scene' is an autorelease object
    CCScene *scene = CCScene::create();
    
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }

//
    CCMenu * m_pItmeMenu = CCMenu::create();
    CCSize size = 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(), "", 20);
        CCMenuItemLabel * pMenuItem = CCMenuItemLabel::create(label , this, menu_selector(HelloWorld::menuBack));
        m_pItmeMenu->addChild(pMenuItem,i);
        pMenuItem->setPosition(CCPointMake(0 , (size.height*0.5-20-(i+1)*15)));
    }
    addChild(m_pItmeMenu,0 ,100);
    
//    預加載音樂和音效
    SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_FILE));
    SimpleAudioEngine::sharedEngine()->preloadEffect(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(EFFECT_FILE));
    
//    設置默認音量
    SimpleAudioEngine::sharedEngine()->setEffectsVolume(0.5);
    SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5);
    
    return true;
}

void HelloWorld:: menuBack(CCObject * pSender)
{
    CCMenuItem * pMenuItem = (CCMenuItem * )(pSender);
    int nIdx = pMenuItem->getZOrder();
    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
            SimpleAudioEngine::sharedEngine()->playEffect(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_FILE)).c_str());
            break;
        case 7:
            //             重復播放音效
            SimpleAudioEngine::sharedEngine()->playEffect(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_FILE)).c_str(), true);
            break;
        case 8:
            //            停止播放音效
            SimpleAudioEngine::sharedEngine()->stopEffect(effectId);
            break;
        case 9:
            //            釋放音效
            SimpleAudioEngine::sharedEngine()->unloadEffect (std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_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;

        default:
            break;
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM