サイトトップ

Director Flash 書籍 業務内容 プロフィール

HTML5テクニカルノート

SoundJSでSoundInstanceオブジェクトを指定して再生する

ID: FN1209009 Technique: HTML5 and JavaScript

SoundJS.getInstanceById()メソッド
文法 SoundJS.getInstanceById(uniqueId)
概要 [静的] SoundInstance.uniqueIdプロパティの値により特定されたSoundInstanceオブジェクトの参照を返す。複数のサウンドのインスタンスをまとめつつ、それぞれを識別して扱うときに役立つ。
引数

uniqueId − インスタンスを識別するSoundInstance.uniqueIdプロパティ値。

戻り値 引数の識別子により特定されたSoundInstanceオブジェクト。
SoundInstance.uniqueIdプロパティ
文法 SoundInstanceオブジェクト.uniqueId
プロパティ値 SoundInstanceオブジェクトを識別するための一意の文字列または数値。
SoundInstance.play()メソッド
文法 SoundInstanceオブジェクト.play(interrupt, delay, offset, loop, volume, pan)
概要 SoundInstanceオブジェクトのサウンドを再生する。一旦再生を止めたインスタンスに対して用いる。
引数

interrupt − 同じサウンドが再生されている他のインスタンスをどのように止めるかを決める文字列。SoundJS定数で定める(表001)。

表001■再生中のインスタンスの扱いを定めるSoundJS定数
定数 再生中のインスタンスの扱い
INTERRUPT_ANY 再生中のインスタンスはすべて止める
INTERRUPT_EARLY 再生中の最初のインスタンスを止める
INTERRUPT_LATE 再生中の最後のインスタンスを止める
INTERRUPT_NONE 再生中のインスタンスは止めない(デフォルト)

delay − サウンドの再生が始まるまでの待ち時間を定めるミリ秒数。デフォルト値は0。

offset − サウンドの再生開始位置を定めるミリ秒数。デフォルト値は0。

loop − サウンドが最後まで再生されたとき、初めに戻って繰返す回数。デフォルト値は0で、繰返さない。-1を定めると、繰返し続ける。

volume − サウンドの音量を定める0から1(デフォルト値)までの数値。

pan − サウンドのパンがサポートされるとき、その低位を定める-1から1までの数値。-1が左で、1が右を示す。デフォルト値は0。なお、HTML Audioではパンは使えない。

戻り値 引数の識別子により特定されたSoundInstanceオブジェクト。

説明

CreateJS SuiteのSoundJSクラスでサウンドを再生するには、静的メソッドSoundJS.play()を呼出します。メソッドの戻り値は、そのサウンドを再生するSoundInstanceオブジェクトです。そこで、再生し終わったサウンドを改めて再生するには、SoundInstance.play()メソッドを用います。SoundJSクラスでサウンドはサウンドをまとめて扱い、ひとつひとつのサウンドを再生するのがSoundInstanceオブジェクトです。SoundInstance.play()メソッドの引数はいずれもオプションで、SoundInstance.play()メソッドの第2引数以降と同じです。

複数のSoundInstanceオブジェクトをまとめておき、好きなサウンドに切替えるといった場合に役立つのが、SoundJS.getInstanceById()メソッドです。メソッドに渡す引数は、SoundInstanceオブジェクトを識別する値です。この値は、SoundInstance.uniqueIdプロパティに備わります。SoundJS.play()メソッドの第1引数に渡すサウンドの識別子(id)とは違いますのでご注意ください。SoundJS.play()メソッドに同じサウンドの識別子を渡して呼出しても、返されるSoundInstanceオブジェクトは別です。

SoundInstance.uniqueIdプロパティの値は、SoundJS.play()メソッドを呼出したとき、戻り値のSoundInstanceオブジェクトに0から始まる連番の整数で与えられます。後から文字列などで任意の値に変えることもできます。複数のサウンドを読込んで再生するとき、それぞれのSoundInstance.uniqueIdプロパティの値を控えておけば、SoundJS.getInstanceById()メソッドでそれらのサウンドを自由に選んで再生できます。


確認されている問題

SoundJS.getInstanceById()メソッドに識別子(SoundInstance.uniqueIdプロパティの値)を渡せば、識別子の定めるSoundInstanceオブジェクトが得られます。そのSoundInstanceオブジェクトの参照を保持している必要はありません。それは、SoundJS.play()メソッドの呼出しによりつくられた(戻り値の)SoundInstanceオブジェクトは、サウンドの再生が終わってもメモリに残ったまま消えないことを意味します[*1]

ですから、同じサウンドを改めて再生するとき、SoundJS.play()メソッドを繰返し呼出すことは避けましょう。もう一度再生したいサウンドは、SoundJS.play()メソッドの戻り値からSoundInstanceオブジェクトの参照をとっておくか、そのSoundInstance.uniqueIdプロパティの値を控えておくべきです。そのうえで、その参照もしくはSoundJS.getInstanceById()メソッドの戻り値に対してSoundInstance.play()メソッドを呼出せばインスタンスが使い回せます。

[*1] CreateJS Supportにおける議論(英語)として、「How to play the finished sound again?」をご参照ください。


作成者: 野中文雄
作成日: 2012年9月22日


Copyright © 2001-2012 Fumio Nonaka.  All rights reserved.