###Animate CC におけるサウンドの扱い
ブラウザ上でサウンドを再生するにはWEB AUDIO APIなどありますがスマホでは最大発音数の問題があります。
特にゲームにおいては複数の音を同時に扱いますのでこれでは使えません
その点、Animate CC(SoundJS)はスマホにおいても最大発音数の問題はクリアしています。
ブラウザ上でサウンドを扱うには最適ではないかと思っています。
さて、そんなAnimate CCですがサウンドでいくつか苦労しました
デフォルトでhtml上にplaySound()が書き出されますがループ回数くらいしかコントロールできません。
最低レベルとしてサウンドのストップ、ミュートまでは入れたいので組み込んだはいいものの背面に回ったときの処理ができませんでした。
具体的にはスマホで画面を閉じても鳴りっぱなしになってしまいます。
最終的には海外の記事を参考にして次のように落ち着きました。
これでなんとかスマホでも思い通りの挙動になりました
//Script
gBgm=playSound(サウンド識別子,ループ回数);//※止める可能性のない効果音などはそのままplaySound
//Global-Script
var gBgm;
function stopSound(){
if(gBgm==undefined){
return;
}
gBgm.paused ? gBgm.paused = false : gBgm.paused = true;
gBgm.currentTime = 0;
gBgm=null;
}
document.addEventListener("visibilitychange", function() {
stopSound();
});
###サウンドの落とし穴 その1
短すぎるサウンドはNG
コンソールでdecode errorが出る場合は短すぎるサウンドがないか見てみるとよいかもしれません。
0.1秒くらいのサウンドはエラーになります。後半に無音をつけてあげれば解決します
###その2
Adobe Auditionで書き出したサウンドにノイズが出る
これは書き出しの際に「マーカーと他のメタデータを含める」にチェックを入れると余分なデータが入るようでサウンドの終わりに「バチッ!」というノイズがのります。
どちらにしてもサウンドに関しては必ず頭とお尻は無音にしないとノイズのもとになります。