2015-02-26に投稿

cocos2d-jsでのBGMの扱い

cocos2d-jsでWEBでプレイする場合はいいのだが、
androidの場合はやはりメモリの圧迫が気になる。

しかしどうもBGMを解放するためのメソッドが見つからない。
effectの方はあるようなのだが。
cocos2d-jsの場合、ライブラリのプログラムを見て無理やり実装しても
WEBでは動作してAndroidでは動作しない、ということがよくあるので
あまり時間をjsを解析しても意味が無い。

cocos2dxのマニュアルを見てみても見つからないし、
勝手にアンロードしてくれるのだろうか、と思いつつcc.audioEngineを見ていたら
cc.audioEngine.stopMusicの引数にBoolean releaseDataという記述を見つけた。
jsのプログラムを見るとどうもリソースを開放しているらしい。

Android側でも正しく動作するかは分からないが、
とりあえずこれで良さそう。

Windowsの場合は最初のプリロードでBGMを全部読み込んで、releaseDataは全部false。
Androidの場合は最初にプリロードしなくても動くので、
遅延なども気にせずplayMusicで同時に読み込ませ、
停止(他のBGMに切り替える)時にreleaseDataを全てtrueで実行する形にした。

(Android側でちゃんとリリースされているかは未検証)

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, Vue.js, React, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!
ボードとは?

関連記事

コメント