cocos2dx-音乐音效
大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程,上节我们说到了“碰撞”不知道大家有没有做出效果来呢,这里还是提示一下,圆形碰撞是很常用的哦。下面我们就开始今天的课程吧,又是一个最常用的东东--音乐音效。
【一】:特性 在cocos2dx开发中,我们音乐的选择也是有区别的,因为虽然cocos2dx实现了跨平台,但是各个平台之间的标准还是乱七八糟。没有人任何机构来统一规范,所以导致我们的音乐要针对客户端准备。在游戏中,我们能听到的音乐有2中,1是长长的背景音乐,2是短短的特效音效。那么这两种选用什么格式的最好呢? 背景音乐 android Mp3 MID WAV ios Mp3 CAF 音效 android OGG(仅支持) ios CAF 这里只是推荐不是支持列表哦,可以看出来,Mp3由于他的特性所以最适合做背景音乐,而音效由于各个平台的不同,所以最佳选择也就不同了。当然了,这都不是问题,因为就算你们各个平台直接不能互通,万能的中国人早在十几年前就发明了音乐格式转换了,比如格式工厂等等,丫丫,小菜儿。 【二】:函数 preloadBackgroundMusic(音乐路径); //预加载音乐 playBackgroundMusic(音乐路径,是否重复); //播放音乐 pauseBackgroundMusic() //暂停 stopBackgroundMusic() //停止 resumeBackgroundMusic() //继续播放 rewindBackgroundMusic() //从头播放 isBackgroundMusicPlaying() //获取背景音乐是否在播放 getBackgroundMusicVolume() //获取音量 setBackgroundMusicVolume() //设置音量 preloadEffect(音效路径) //预加载音效 unloadEffect(音效路径) //释放音效文件 playEffect(音效路径,是否重复) //播放音效 stopEffect(音效ID) //停止 stopAllEffects() //全部停止 pauseEffect(音效ID) //暂停 pauseAllEffects() //全部暂停 resumeEffect(音效ID) //继续播放 resumeAllEffects() //全部继续播放 getEffectsVolume() //获取音量 setEffectsVolume() //设置音量 【三】:示例 1.新建项目 musicdemo 2.加载3张图片 musicdemo.h 1.包含音乐类和扩展类 #include "SimpleAudioEngine.h" #include "cocos-ext.h" 2.引用命名空间cocos2d::extension using namespace cocos2d::extension; 3.写3个对应的回调函数 void playmusic(CCObject * sender,CCControlEvent); void pausemusic(CCObject * sender,242)">void stopmusic(CCObject * sender,192)">musicdemo.cpp 1.添加3个按钮 //创建3个按钮 CCScale9Sprite* sp1 = CCScale9Sprite::create("1.png"); CCScale9Sprite* sp2 = CCScale9Sprite::create("2.png"); CCScale9Sprite* sp3 = CCScale9Sprite::create("3.png"); CCControlButton * b1=CCControlButton::create(sp1); CCControlButton * b2=CCControlButton::create(sp2); CCControlButton * b3=CCControlButton::create(sp3); b1->setPosition(ccp(mysize.width/2-100,mysize.height/2+100)); b2->setPosition(ccp(mysize.width/2,242)">b3->setPosition(ccp(mysize.width/2+100,242)">b1->addTargetWithActionForControlEvents( this, cccontrol_selector(HelloWorld::playmusic),242)"> CCControlEventTouchDown ); b2->addTargetWithActionForControlEvents( cccontrol_selector(HelloWorld::pausemusic),242)">b3->addTargetWithActionForControlEvents( cccontrol_selector(HelloWorld::stopmusic),242)">b1->setPreferredSize(ccp(57,57)); b2->setPreferredSize(ccp(57,242)">b3->setPreferredSize(ccp(57,242)">this->addChild(b1,1); this->addChild(b2,242)">this->addChild(b3,Tahoma; line-height:21px"> 2.根据当前系统判断预加载的文件 这里注意一下,在win下"/music/winback.mid"也可以找到这个音乐,但是android下不行,所以要注意开头不要加“/” #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) #define MUSIC_FILE "music/winback.mid" #elif (CC_TARGET_PLATFORM == CC_PLATFORM_BLACKBERRY || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX ) #define MUSIC_FILE "none.ogg" #else #define MUSIC_FILE "music/androidback.mp3" #endif 3.预加载音乐,设置音量 //加载音乐 SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(MUSIC_FILE); //设置默认音量 SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(1); 4.完成3个回调函数 void HelloWorld::playmusic(CCObject * sender,CCControlEvent){ SimpleAudioEngine::sharedEngine()->playBackgroundMusic(MUSIC_FILE,true); } void HelloWorld::pausemusic(CCObject * sender,242)"> SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); void HelloWorld::stopmusic(CCObject * sender,242)"> SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(); 好了,最后我们在win上试一下,我也打好了apk包,大家可以直接下载试一下android的环境
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |