1

次のようなビープ音を再生できます。

private var beep:Sound = new Sound();

private function beepInit():void {
    var beepHandler:Function = new Function();

        beepHandler = function(event:SampleDataEvent):void {
            for (var i:uint = 0; i < 2048; i++) {
                var wavePos:Number = 20 * Math.PI * i / 2048;
                event.data.writeFloat(Math.sin(wavePos));
                event.data.writeFloat(Math.sin(wavePos));
            }
        }

        beep.addEventListener(SampleDataEvent.SAMPLE_DATA, beepHandler);
}

アプリケーションの開始時に、beepInit(); を呼び出します。

再生するには、以下を呼び出します: beep.play();

これが連続音です。どうすれば元に戻せますか。500ミリ秒。短いビープ音?

4

1 に答える 1

3

再生したい長さに達したら、すぐにサンプルの作成を停止する必要があります。これを行うには、再生するサンプルの量に対して作成されたサンプルの量を確認します。

再生するサンプルの量は、サンプル周波数 (44100/秒) に再生するサウンドの長さ (秒単位) を掛けたものです。

private const sampleFrequency:uint = 44100;
private var samplesCreated:uint = 0;
private var lengthInSeconds:Number = 0.5;
private var beep:Sound = new Sound();

private function beepInit():void {
  var beepHandler:Function = function ( event:SampleDataEvent ):void {
    for (var i:uint = 0; i < 2048; i++) {
      if (samplesCreated >= sampleFrequency * lengthInSeconds) {
        return;
      }
      var wavePos:Number = 20 * Math.PI * i / 2048;
      event.data.writeFloat( Math.sin( wavePos ) );
      event.data.writeFloat( Math.sin( wavePos ) );
      samplesCreated++;
    }
  };

  beep.addEventListener( SampleDataEvent.SAMPLE_DATA, beepHandler );
}
于 2013-02-08T08:49:43.897 に答える