サウンドコンポーネントは、エンティティをサウンドまたはオーディオのソースとして定義します。sound コンポーネントは位置情報であり、components-position の影響を受ける。

注: iOSでサウンドを再生するには - どのブラウザでも - 物理的なユーザーインタラクション が必要です。これはブラウザの制約であり、A-Frameの内部イベント(カーソルの融合など)はイン タラクションとしてカウントされません。この問題を解決するには、Begin Experienceボタンを 使ってアンビエントミュージックを開始したり、Howler.js (opens new window)などのライブラリを使ってオーディオ スプライトを作成したりする方法があります。

#

<a-entity id="river" geometry="primitive: plane" material="color: blue"
          position="-10 0 0" sound="src: url(river.mp3); autoplay: true"></a-entity>

# プロパティ

Property 概要 デフォルト値
autoplay 一度設定したサウンドを自動的に再生するかどうか。 false
distanceModel linearリニア, inverseインバース, or exponential指数 inverse
loop 音の再生が終了したらループさせるかどうか。 false
maxDistance 音源からリスナーまでの最大距離で、それ以上音量を下げない。 10000
on 音を再生する前にエンティティが聞くべきイベント。 null
poolSize このサウンドを同時に再生できるインスタンスの数 1
positional 音声が移動していくものか否か true
refDistance 音源がリスナーから遠ざかるにつれて音量を減少させるための基準距離。 1
rolloffFactor 音源がリスナーから遠ざかるにつれて、どの程度の速さで音量が減少するかを記述する。 1
src アセット<audio>またはurl()で囲まれたサウンドファイルのパスへのセレクタ null
volume 音を再生する音量。 1

# メソッド

イベント名 概要
pauseSound サウンドを一時停止する
playSound サウンドを再生する
stopSound サウンドを停止する

# イベント

イベント名 概要
sound-loaded サウンドファイルがロードされたときにトリガーされる。イベントの詳細には、サウンドの名前とIDが含まれます。
sound-ended サウンドの再生が終了したときにトリガーされる。イベントの詳細には、サウンドの名前とidが含まれます。

# イベントでサウンドを再生する

サウンドコンポーネントは、再生前にイベントをリッスンすることもできます。例えば、モンスターをクリックするたびに笑い声が再生されるようにすることもできます。

<a-entity cursor position="0 0 -5"></a-entity>

<a-entity id="elmo" geometry="primitive: box" material="src: elmo.png"
          sound="src: url(ticklelaugh.mp3); on: click"></a-entity>

# サウンドアセットをプリロードしておく

パフォーマンスを向上させるために、サウンドアセット上のシーンをブロックし、プリロードとキャッシュを行うことをお勧めします。アセット管理システムを通してそうすることができます。

<a-scene>
  <a-assets>
    <audio id="river" src="river.mp3" preload="auto"></audio>
  </a-assets>

  <a-entity sound="src: #river"></a-entity>
</a-scene>

# 一時停止と再開

再生中のサウンドをプログラムで一時停止または再開するには、エンティティに一時停止または再開を指示します。

var entity = document.querySelector('[sound]');
entity.components.sound.stopSound();

サウンドを一時停止するには

entity.components.sound.pauseSound();

サウンドを再生するには

entity.components.sound.playSound();