【转载】cocos2dx 3.x 声音播放、音量调节

1. playBackgroudMusic() 

playBackgroudMusic 只适合播放持续时间比较长的声音文件,比如背景音乐。
[html] view plain copy
 
 print?
  1. bool PlayMusic::init()  
  2. {  
  3.     if ( !Layer::init() )  
  4.     {  
  5.         return false;  
  6.     }  
  7.   
  8.     bool bRet = false;  
  9.   
  10.     do{  
  11.         CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("sky_city.mp3",true);  
  12.         bRet = true;  
  13.   
  14.     }while(0);  
  15.   
  16.     return bRet;   
  17.   
  18. }  

2. playEffect()

playEffect 适合播放战斗的打斗声音、技能释放的声音。
[html] view plain copy
 
 print?
  1. bool PlayMusic::init()  
  2. {  
  3.     if ( !Layer::init() )  
  4.     {  
  5.         return false;  
  6.     }  
  7.   
  8.     bool bRet = false;  
  9.   
  10.     do{  
  11.         //CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("sky_city.mp3",true);  
  12.         CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("error.wav");  
  13.         bRet = true;  
  14.   
  15.     }while(0);  
  16.   
  17.     return bRet;   
  18.   
  19. }  

3. 圆形音量按钮 ControlPotentiometer

一个圆形音量按钮由底座、进度条、控制按钮三部分组成。创建好音量按钮之后,它具备调节音量的功能,只有鼠标放在控制按钮上拖到一次,进度条就会改变显示范围,当然如果想控制音量,还需要加入监听事件。
 
[html] view plain copy
 
 print?
  1. bool PlayMusic::init()  
  2. {  
  3.     if ( !Layer::init() )  
  4.     {  
  5.         return false;  
  6.     }  
  7.     ControlPotentiometer* potentiometer = ControlPotentiometer::create("potentiometerTrack.png","potentiometerProgress.png","potentiometerButton.png");  
  8.     potentiometer->setPosition(Point(200,200));  
  9.   
  10.     //监听进度值改变事件  
  11.     potentiometer->addTargetWithActionForControlEvents(this,cccontrol_selector(PlayMusic::onValueChange),Control::EventType::VALUE_CHANGED);  
  12.   
  13.     this->addChild(potentiometer);  
  14.       
  15.     return true;   
  16.   
  17. }  
  18. void PlayMusic::onValueChange(Ref* psender,Control::EventType event)  
  19. {  
  20.     ControlPotentiometer* potentiometer = (ControlPotentiometer*)psender;  
  21.     String* valueStr = String::createWithFormat("%f",potentiometer->getValue());  
  22.     log(valueStr->getCString());  
  23. }  

4. 音量控制按钮

ControlSlider 也是有底部、进度条、控制按钮三部分组成。用法和ControlPotentiometer几乎一样。
[html] view plain copy
 
 print?
  1. ControlSlider* slider = ControlSlider::create("background.png","progress.png","sliderThumb.png");  
  2. slider->setPosition(ccp(300,200));  
  3. //设置滑动条的范围  
  4. slider->setMinimumValue(0);  
  5. slider->setMaximumValue(1000);  
  6. //设置滑动条当前值  
  7. slider->setValue(300);  
  8. slider->addTargetWithActionForControlEvents(this,cccontrol_selector(PlayMusic::sliderChange),Control::EventType::VALUE_CHANGED);  
  9. this->addChild(slider);  
[html] view plain copy
 
 print?
  1. void PlayMusic::sliderChange(Ref* psender,Control::EventType event)  
  2. {  
  3.     ControlSlider* slider = (ControlSlider*)psender;  
  4.     String* valueStr = String::createWithFormat("%f",slider->getValue());  
  5.     log(valueStr->getCString());  
  6. }  
posted @ 2016-07-19 13:22  silent-bobo  阅读(816)  评论(0编辑  收藏  举报