パッケージ | flash.events |
クラス | public class SampleDataEvent |
継承 | SampleDataEvent Event Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
このイベントには 2 つの用途があります。
- 動的に生成されたオーディオデータを Sound オブジェクトに提供する。
- Microphone オブジェクトのオーディオデータを取得する。
Sound オブジェクトを使用してオーディオを動的に生成する場合は、sampleData
イベントを使用して、動的に生成されたオーディオを再生します。この環境では、Sound オブジェクトにはサウンドデータは実際には格納されません。代わりに、Sound オブジェクトは、sampleData
イベントのハンドラーとして割り当てた関数を使用して、ストリーム中のサウンドデータのソケットとして動作します。
関数では、ByteArray.writeFloat()
メソッドを使用して、再生するサンプリングデータを格納するイベントの data
プロパティに書き込みます。
Sound オブジェクトに MP3 ファイルが読み込まれていない状態で、このオブジェクトの play()
メソッドを呼び出すと、オブジェクトは sampleData
イベントの送出を開始し、サウンドのサンプルを要求します。Sound オブジェクトは、データの配信が停止されるか、SoundChannel オブジェクトの stop()
メソッドが呼び出されるまで、サウンドの再生中にイベントを送信し続けます。
イベントの待ち時間はプラットフォームにより異なりますが、Flash Player または AIR の将来のバージョンでは変更できるようになります。特定の待ち時間に依存しないようにしてください。代わりに、((SampleDataEvent.position/44.1) - SoundChannelObject.position)
という式を使用して計算します。
2048 ~ 8192 個のサンプルを SampleDataEvent オブジェクトの data
プロパティ用に用意します。最適なパフォーマンスを得るには、できるだけ多くのサンプルを用意します。用意するサンプルが少なければ少ないほど、再生中にクリック音およびポップ音が発生する可能性が高くなります。この現象はプラットフォームごとに異なり、また、様々な状況で発生します(例えば、ブラウザーのサイズを変更した場合)。あるプラットフォームで 2048 のみのサンプルを用意した状態で動作するコードを記述しても、その同じコードを別のプラットフォームで実行した場合には動作しないことがあります。待ち時間をできるだけ短くするには、ユーザーが選択できるデータの量を考慮します。
用意したサンプル数が 2048 より少ない場合、Sound オブジェクトは存在するサンプルを再生し、その後、サウンドファイルの末尾に達したかのようにサウンドを停止して、complete
イベントを生成します。
Sound オブジェクトの extract()
メソッドを使用すると、サウンドデータを抽出し、動的ストリームに書き込んでから再生することができます。
Sound オブジェクトで sampleData
イベントを使用する場合、有効な Sound メソッドは extract()
と play()
のみです。他のメソッドまたはプロパティを呼び出すと、「invalid call」例外が発生します。SoundChannel オブジェクトのすべてのメソッドおよびプロジェクトは、この場合でも有効です。
マイク音声をキャプチャする場合は、sampleData
イベントを使用して、マイクからの音声データをキャプチャします。sampleData
イベントのイベントリスナーを追加した場合、オーディオサンプルが使用可能になると、Microphone オブジェクトからイベントが送出されます。
イベントハンドラー関数では、ByteArray.readFloat()
メソッドを使用して、サンプリングデータが格納されているイベントの data
プロパティを読み取ります。イベントには複数のサンプルが格納されるので、使用可能なデータを読み取るには while
句でループ処理する必要があります。
var soundBytes:ByteArray = new ByteArray(); while(event.data.bytesAvailable) { var sample:Number = event.data.readFloat(); soundBytes.writeFloat(sample); }
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
bubbles : Boolean [読み取り専用]
イベントがバブリングイベントかどうかを示します。 | Event | ||
cancelable : Boolean [読み取り専用]
イベントに関連付けられた動作を回避できるかどうかを示します。 | Event | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
currentTarget : Object [読み取り専用]
イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 | Event | ||
data : ByteArray
オーディオストリーム内のデータです。 | SampleDataEvent | ||
eventPhase : uint [読み取り専用]
イベントフローの現在の段階です。 | Event | ||
position : Number
オーディオストリーム内のデータの位置です。 | SampleDataEvent | ||
target : Object [読み取り専用]
イベントターゲットです。 | Event | ||
type : String [読み取り専用]
イベントのタイプです。 | Event |
メソッド | 定義元 | ||
---|---|---|---|
SampleDataEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, theposition:Number = 0, thedata:ByteArray = null)
オーディオデータイベントに関する情報を含むイベントオブジェクトを作成します。 | SampleDataEvent | ||
[オーバーライド]
SampleDataEvent オブジェクトのコピーを作成して、各プロパティの値を元のプロパティの値と一致するように設定します。 | SampleDataEvent | ||
カスタム ActionScript 3.0 Event クラスに toString() メソッドを実装するためのユーティリティ関数です。 | Event | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
イベントで preventDefault() メソッドが呼び出されたかどうかを確認します。 | Event | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
イベントのデフォルト動作をキャンセルできる場合に、その動作をキャンセルします。 | Event | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
イベントフローの現在のノードおよび後続するノードで、イベントリスナーが処理されないようにします。 | Event | ||
イベントフローの現在のノードに後続するノードで、イベントリスナーが処理されないようにします。 | Event | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
[オーバーライド]
SampleDataEvent オブジェクトのすべてのプロパティを含むストリングを返します。 | SampleDataEvent | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
定数 | 定義元 | ||
---|---|---|---|
SAMPLE_DATA : String = "sampleData" [静的]
SampleDataEvent イベントオブジェクトの type プロパティ値を定義します。 | SampleDataEvent |
data | プロパティ |
position | プロパティ |
SampleDataEvent | () | コンストラクター |
public function SampleDataEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, theposition:Number = 0, thedata:ByteArray = null)
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
オーディオデータイベントに関する情報を含むイベントオブジェクトを作成します。イベントリスナーには Event オブジェクトがパラメーターとして渡されます。
パラメーターtype:String — イベントのタイプです。この値は Event.SAMPLE_DATA です。
| |
bubbles:Boolean (default = false ) — Event オブジェクトがイベントフローのバブリング段階で処理されるかどうかを判断します。
| |
cancelable:Boolean (default = false ) — Event オブジェクトがキャンセル可能かどうかを判断します。
| |
theposition:Number (default = 0 ) — オーディオストリーム内のデータの位置です。
| |
thedata:ByteArray (default = null ) — データのバイト配列です。
|
clone | () | メソッド |
toString | () | メソッド |
override public function toString():String
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
SampleDataEvent オブジェクトのすべてのプロパティを含むストリングを返します。ストリングは次の形式です。
[SampleDataEvent type=value bubbles=value cancelable=value theposition=value thedata=value]
String — SampleDataEvent オブジェクトのすべてのプロパティを含むストリングです。
|
SAMPLE_DATA | 定数 |
public static const SAMPLE_DATA:String = "sampleData"
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
type
プロパティ(SampleDataEvent
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
position | オーディオデータの提供元となるポイントです。 |
関連する API エレメント
var mySound:Sound = new Sound(); function sineWaveGenerator(event:SampleDataEvent):void { for ( var c:int=0; c<8192; c++ ) { event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); } } mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator); mySound.play();
Tue Jun 12 2018, 10:34 AM Z