0


0

SampleDataEvent.SAMPLE_DATAはFlexで起動しませんか?

Microphone.addEventListener(SampleDataEvent.SAMPLE_DATA、gotMicData);イベントgotMicDataは発生しません。 しかし、私はdispatchEventを使用しようとしましたが、それはnull byteArrayを返します。 ただし、Flashcs5でも同様のコードが正常に機能します…​

        import flash.events.SampleDataEvent;
        import flash.media.Microphone;
        import flash.media.Sound;
        import flash.utils.ByteArray;

        [Bindable] private var microphoneList:Array;
                 protected var microphone:Microphone;
                 protected var isRecording:Boolean = false;
                 protected var soundRecording:ByteArray;
                 protected var soundOutput:Sound;

        protected function setupMicrophoneList():void
        {
            microphoneList = Microphone.names;
        }

        protected function setupMicrophone():void
        {
            microphone = Microphone.getMicrophone(comboMicList.selectedIndex);
            microphone.rate = 44;
        }

        protected function startMicRecording():void
        {
            isRecording = true;
            soundRecording = new ByteArray();
            microphone.addEventListener(SampleDataEvent.SAMPLE_DATA, gotMicData);
        }

        protected function stopMicRecording():void
        {
            isRecording = false;
            microphone.removeEventListener(SampleDataEvent.SAMPLE_DATA, gotMicData);
        }

        private function gotMicData(micData:SampleDataEvent):void
        {
            soundRecording.writeBytes(micData.data);
        }

        protected function playbackData():void
        {
            soundRecording.position = 0;

            soundOutput = new Sound();
            soundOutput.addEventListener(SampleDataEvent.SAMPLE_DATA, playSound);

            soundOutput.play();
        }

        private function playSound(soundOutput:SampleDataEvent):void
        {
            if (!soundRecording.bytesAvailable > 0)
                return;
            for (var i:int = 0; i < 8192; i++)
            {
                var sample:Number = 0;
                if (soundRecording.bytesAvailable > 0)
                    sample = soundRecording.readFloat();
                soundOutput.data.writeFloat(sample);
                soundOutput.data.writeFloat(sample);
            }
        }


    ]]>

3 Answer


0


Flex Builderをインストールすると、sdk 3.2がデフォルトとして設定され、最新のflex sdkをダウンロードしてflex builderで使用するだけでよいことがわかりました。 コードは正常に動作します。


0


SampleDataEventは、Flash Player 10.1の機能です。 プロジェクトのFlexコンパイラプロパティでプレーヤーのターゲットを10.1以上に設定すると、うまくいくはずです。


0


ちょっとこのスレッドに追加するために、このブログでコメントを見るまで、私は同様の問題を抱えていました:

基本的に、フラッシュセキュリティ設定ウィンドウに対応できるようにステージが十分に大きいことを確認する必要があります。

この美しさを理解しようとして夢中になった。