シヴァのブログ

UnityやUE4や趣味とかいろいろ...

「Cocos2D-x」AudioEngine

Cocos2d-x3.3beta0から「SimpleAudioEngine」がなくなり、
AudioEngineクラスが作られたので、導入方法をメモ。


現在のバージョン:Cocos2d-x3.13.1
※SimpleAudioEngineにはpreloadがあるのにAudioEngineにはpreloadが無くなっている。


初めに、インクルードとネームスペース。

#include "audio/include/AudioEngine.h"

using namespace cocos2d;
using namespace experimental;

簡単機能の使い方

//Audioの全停止
AudioEngine::stopAll();

//AudioIDを指定してAudioの停止
sound_id = AudioEngine::play2d(SOUND_FILE_BGM, true, 0.5, nullptr);//ループON、音量:0.5
AudioEngine::stop(sound_id);

//Audioの再生
AudioEngine::play2d(SOUND_FILE_TEXT_SE);


その他の機能は以下のリファレンスを参照する
cocos2d-x: AudioEngine Class Reference


以上。


※追記
以下の2つの方法をメモ。

・アプリを起動中、途中でホーム画面に戻した際に、音楽をストップさせる。(applicationDidEnterBackground())
・また、逆に途中から再開する際に、音楽を再生させる。(applicationWillEnterForeground())


「AppDelegate.cpp」の”applicationDidEnterBackground()”と”applicationWillEnterForeground()”の中に追記する。

// This function will be called when the app is inactive. Note, when receiving a phone call it is invoked.
void AppDelegate::applicationDidEnterBackground() {
    Director::getInstance()->stopAnimation();

    AudioEngine::pauseAll();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
    Director::getInstance()->startAnimation();

    AudioEngine::resumeAll();
}


さらに、追記(2017/06/02)

サウンドの推奨拡張子ついて

プラットフォームによって推奨されているサウンドの拡張子が異なる。
「wave」や「mp3」はAndroidiOSのどちらのプラットフォームでも利用できる。しかし、どちらにも以下の欠点がある。

  • 「wave」はファイル容量が大きい。
  • 「mp3」はループ再生に不向き。

クロスプラットフォームの場合、理想的な方法は、コード内で切り替えるやり方がいい。


さらに、追記(2017/07/10)

エラー処理


「Fail to play %s cause by limited max instance of AudioEngine」
「Fail to play %s cause by limited max instance of AudioProfile」
「Fail to play %s cause by limited minimum delay」

ファイル場所:「...\cocos2d\cocos\audio\AudioEngine.cpp」



AudioPlayer (322): cocos2d::experimental::AudioPlayer::rotateBufferThread exited.

AudioPlayer (131): cocos2d::experimental::AudioPlayer::play2d:alSourcePlay error code:a004
原因:音が鳴り終わる前に、次の音を鳴らそうと準備する所でエラーが出る

参考サイト:
iOSアプリ開発:OpenALで音連続再生時にエラー発生 - Qiita
OpenAL 1.1 Specification and Reference



ファイル場所:「...\cocos2d\cocos\audio\win32\AudioPlayer.cpp」