3

サウンド入力(マイク)がイコライザーをトリガーするFlash(AS3)で一種のゲームを構築しています(micLevel.heightはマスクの高さを制御します(イコライザーを表示します)。マイクのactivityLevelは数値(0- 100)テキストフィールドに表示されます。参加者はマイクで叫び、100に到達しようとします(私はmc.gainを使用して、100に到達しにくくします)。一種の失われた。

私は彼らが到達することができた最大の数を表示する必要があり、これに時間制限を設けたいと思います。の最高のサウンドレベルは、たとえば5秒です。

これまでのコードは次のとおりです。

var mic:Microphone = Microphone.getMicrophone();

Security.showSettings("privacy");
mic.setLoopBack(true);

if(mic != null)
{
    mic.setUseEchoSuppression(true);
    stage.addEventListener(Event.ENTER_FRAME, showLevel);
}

function showLevel(e:Event)
{
    micLevel.height = mic.activityLevel * 6;
    //mic.gain = 1;
    //trace(mic.activityLevel);
    prosent.text = "Activity: " + String(mic.activityLevel) + "%";
}

テキストフィールド「prosent」(時間制限あり)から最大の数値を取得し、それを新しいテキストフィールドに表示するコードが必要です。

よくわからない場合は申し訳ありませんが、誰かが私を助けてくれるなら、私はとても幸せです!

Brハラルド

4

2 に答える 2

1

micLevel.height値がそれよりも大きい場合は常に更新される変数を作成するだけです。

var highest:Number = 0;

function showLevel(e:Event):void
{
    if(micLevel.height > highest)
    {
        // The mic level was higher than the previous highest level.
        highest = micLevel.height;

        // Change your other text field to show the value of 'highest'.
        // ..
    }

    prosent.text = "Activity: " + String(mic.activityLevel) + "%";
}
于 2012-11-01T22:20:50.717 に答える
1

タイマーを開始して、highestLevel 変数をリセットします。これにより、5 秒ごとに最高レベルが表示されます。最高のものを常に表示したい場合は、タイマーの開始/停止ボタンも追加できます。

次に、showLevel 関数でMath.max()、最大数 (現在のアクティビティと最近の最大値の間) を取得するために使用します。

var highestLevel:Number = 0;
var timer:Timer = new Timer(5000); // fires every 5 seconds

function initLevels(e:TimerEvent){
  timer.stop(); // you could stop your timer here automatically and then use a button to start again
  highestLevel = 0;  // when timer fires restart your highestLevels var
}

function showLevel(e:Event) {
  highestLevel = Math.max(mic.activityLevel * 6, highestLevel);
  prosent.text = "Activity: " + String(highestLevel) + "%";
}

timer.start();
timer.addEventListener(TimerEvent.TIMER, initLevels);
addEventListener(Event.ENTER_FRAME, showLevel);
于 2012-11-01T22:29:36.837 に答える