cocos2d-x 背景音乐播放


Code

 

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
     bool bRet =  false;
     do
    {
         //////////////////////////////////////////////////////////////////////////
         // super init first
         //////////////////////////////////////////////////////////////////////////

        CC_BREAK_IF(! CCLayer::init());
         //MYCode
        CCSize size = CCDirector::sharedDirector()->getWinSize();
        setTouchEnabled( true);

        std::string items[] =
        {
             "play background music",
             "stop background music",
             "pause background music",
             "resume background music",
             "rewind background music",
        };
        CCMenu *menu = CCMenu::create();
         int count =  sizeof(items) /  sizeof(items[ 0]);
         for( int i =  0; i < count; i++)
        {
            CCLabelTTF *label = CCLabelTTF::create(items[i].c_str(),  "Arial"24);
            CCMenuItemLabel *pMenuItem = CCMenuItemLabel::create(label,  this, menu_selector(HelloWorld::menuCallback));
            menu->addChild(pMenuItem, i +  10000);  //note
        }
        menu->setPosition(ccp(size.width /  2, size.height /  2));
        menu->alignItemsVertically();
        addChild(menu);

         //preload background music
        CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_FILE));

         //set default volume
        CocosDenshion::SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume( 0. 5);

        bRet =  true;
    }
     while ( 0);

     return bRet;
}
void HelloWorld::menuCallback(CCObject *pSender)
{
    CCMenuItem *pMenuItem = (CCMenuItem *)(pSender);
     int index = pMenuItem->getZOrder() -  10000;
     switch(index)
    {
     case  0:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(MUSIC_FILE)).c_str(),  true);
         break;
     case  1:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
         break;
     case  2:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
         break;
     case  3:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
         break;
     case  4:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();
         break;
    }
}

 

 

注意SimpleAudioEngine前面需要加上CocosDenshion的前缀,否则会报错。

源文件下载

点击打开链接

 

posted @ 2013-07-30 19:10  jlins  阅读(727)  评论(0编辑  收藏  举报