[꼭대기] [cocos2d - x 입문 실전] 위 챗 비행기 대전 의 14: 배경 음악 과 음향 효과

오리지널 작품, 전재 표시:http://blog.csdn.net/jackystudio/article/details/12117827
전체 게임 이 완성 되 었 으 니 컴퓨터 에서 시원 하 게 비행 기 를 탈 수 있 습 니 다!근 데 뭐 가 빠 진 것 같 아 요?
참, 배경 음악 과 게임 사 운 드.처음에 우리 가 cocos2dx 프로젝트 를 만 들 때 선택 할 옵션 이 있 었 던 것 을 기억 하 십 니까?SimpleAudioEngine!그래, 얘 야.
1. 음악 형식
공식 문서 에 이렇게 쓰 여 있 습 니 다.
Android: android CocosDenshion            android.media.MediaPlayer      。
iOS: IOS  Cocos2d-x CocosDenshion       Cocos2d-iphone        ,mp3,caf      。
windows:.mid, .wav are supported. Note that mp3 is not supported.
Marmalade:mp3

windows 는 mp3 를 지원 하지 않 는 다 고 하지만 실제로 사용 할 때 mp3 도 windows 에서 정상적으로 재생 할 수 있 는 것 으로 나 타 났 다.
2. 배경 음악
배경 음악 은 전체 게임 에서 같은 시간 에 하나만 있 을 수 있다.
(1) 헤더 파일 을 추가 하고 네 임 스페이스 를 사용 합 니 다.
 #include "SimpleAudioEngine.h"
 using namespace CocosDenshion;//             SimpleAudioEngine

물론 Simple Audio Engine 을 사용 할 때 이렇게 쓸 수도 있 습 니 다.
 CocosDenshion::SimpleAudioEngine

(2) 배경 음악 미리 불 러 오기
우 리 는 Welcome Scene 에 배경 음악 을 미리 불 러 옵 니 다. 사실 이 나 무 는 유용 합 니 다. 나중에 설명 합 니 다.
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("sound/game_music.mp3");

(3) 배경 음악의 기타 API
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("sound/game_music.mp3",true);//        ,true    
SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();//      ,          ,            
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();//      
SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();//        
SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()//       ,           
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5);//    0.0-1.0

게임 과정 에서 일시 정지, 끝 같은 곳 에서 어디 를 통제 해 야 하 는 지 는 말 하지 않 겠 습 니 다. 취향 을 보 겠 습 니 다.
3. 게임 사 운 드
게임 의 음향 효 과 는 겹 칠 수 있다.
(1) 같은 헤더 파일 과 네 임 스페이스
(2) 사 운 드 미리 불 러 오기
SimpleAudioEngine::sharedEngine()->preloadEffect("sound/bullet.mp3");

(3) 게임 사 운 드 의 기타 API
SimpleAudioEngine::sharedEngine()->playEffect("sound/bullet.mp3",false);//        ,false     
SimpleAudioEngine::sharedEngine()->stopEffect(m_nSoundId);//    ,            ,     playEffect   
SimpleAudioEngine::sharedEngine()->stopAllEffects();//      
SimpleAudioEngine::sharedEngine()->pauseEffect(m_nSoundId);//      
SimpleAudioEngine::sharedEngine()->resumeEffect(m_nSoundId);//      
SimpleAudioEngine::sharedEngine()->pauseAllEffects();//      
SimpleAudioEngine::sharedEngine()->resumeAllEffects();//        
SimpleAudioEngine::sharedEngine()->setEffectsVolume(0.5);//      0.0-1.0
SimpleAudioEngine::sharedEngine()->unloadEffect("sound/bullet.mp3");//    

4. 자원 방출
Simple Audio Engine 의 소스 코드 를 보면 preload Effect () 를 사용 할 때 엔진 이 음향 효 과 를 추가 하 는 것 을 발견 할 수 있 습 니 다.
static EffectList s_List;

그 중에서 EffectList 는 맵 으로 음향 효과 파일 과 이 를 통 해 얻 은 hash 값 을 포함 합 니 다.따라서 메모리 에 불 러 오 면 음향 효과 의 로드 효율 을 높 일 수 있다.
따라서 사용 이 끝 난 후에 음향 효과 자원 을 방출 하고 호출 하 는 것 을 기억 해 야 합 니 다.
void SimpleAudioEngine::end()

sList 가 가리 키 는 음악 자원 방출.
preloadBackground Music () 의 실현 을 살 펴 보 자.
void SimpleAudioEngine::preloadBackgroundMusic(const char* pszFilePath)
{

}

니 마, 공 실현 이 라 니...마이너스 롤러 굵기...
다시 보기 playBackground Music () 소스 코드:
void SimpleAudioEngine::playBackgroundMusic(const char* pszFilePath, bool bLoop)
{
    if (! pszFilePath)
    {
        return;
    }

    sharedMusic().Open(_FullPath(pszFilePath), _Hash(pszFilePath));
    sharedMusic().Play((bLoop) ? -1 : 1);
}

배경 음악 이라는 물건 을 플레이 할 때 만 불 러 오 다 니....................................................그래, 네가 이 겼 어...
사실 관심 있 는 학생 들 은 음향 효 과 를 모방 하여 preloadBackground Music 을 실현 한 다음 에 재생 할 때 바로 재생 하면 효율 이 훨씬 빨 라 집 니 다.소스 코드 의 뜻 을 이해 하지 못 했 는데, 공 성 사자 가 재떨이 치 느 라 바 빠 서 쓸 시간 이 없 는 건 가?
효과 도
이 절 은 효과 도가 없 으 니 스스로 뇌 보 하 세 요.

좋은 웹페이지 즐겨찾기