【cocos2dx】BGM・効果音を鳴らす

cocos2dxでは、音を簡単に鳴らすことができます。 その際に利用するのが、SimpleAudioEngineクラスです。

BGMを鳴らす

音楽データが準備できれば、以下のコードでBGMを鳴らすことができます。

[c]

//SimpleAudioEngineが利用できるように設定する

include "SimpleAudioEngine.h"

using namespace CocosDenshion;

//init()内 //あらかじめ、音楽データを読み込む SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5); SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("field.mp3");

//音楽を再生する SimpleAudioEngine::sharedEngine()->playBackgroundMusic(field.mp3);

[/c]

あらかじめ、音楽データを読み込まなくても再生できますが、メモリーの負荷が高まる、また再生が遅れるなど起る場合があります。 ですので、preloadBackgroundMusic()を利用した方がいいでしょう。

BGMを止める

BGMを止める場合は、以下のコードを利用します。

[c]

//音楽を止める SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true);

[/c]

その他の処理

その他、色々なことができます。

[c]

//一時停止 SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();

//再開 SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();

//音楽を先頭に戻す SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();

//音量を変更する SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.4)

//今、BGMが流れているかどうか

if(SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying){

}else{

}

[/c]

効果音を鳴らす

続きましては、効果音を鳴らす方法です。 だいたい以下のようなコードになります。

[c]

//SimpleAudioEngineが利用できるように設定する

include "SimpleAudioEngine.h"

using namespace CocosDenshion;

//init()内 //あらかじめ、音楽データを読み込む SimpleAudioEngine::sharedEngine()->setEffectsVolume(0.5); SimpleAudioEngine::sharedEngine()->preloadEffect("beam.mp3");

//音楽を再生する // int soundID; soundID = SimpleAudioEngine::sharedEngine()->playEffect(beam.mp3);

[/c]

効果音も、事前に音楽データを読み込まなくても再生できます。

その他の処理

その他、色々なことができます。 その際に、どの効果音に処理をするかを、効果音を再生時に取得したint型の数字を利用します。

[c]

//効果音を止める SimpleAudioEngine::sharedEngine()->stopEffect(soundID);

//一時停止 SimpleAudioEngine::sharedEngine()->pauseEffect(soundID);

//再開 SimpleAudioEngine::sharedEngine()->resumeEffect(soundID);

[/c]

音楽データについて

cocos2dで利用していた際には,m4a(AAC規格)のデータを利用してできるだけデータの容量を小さくしていましたが、Andoridの場合はこれが利用できないみたいです。 ですので、Andorid用のデータを新たに用意するが、またMP3を利用した場合、両方のOSで音楽が再生できるみたいです。

この辺りのフォーマットについては注意が必要ですね。