如何从AS3中的随机创建的数字列表中显示最高值



i m在闪光灯(AS3)中构建一种游戏,其中声音输入(麦克风)触发均衡器( miclevel.height.height.height 控制掩码的高度(显示均衡器。达到100(我使用 mc.gain 使其难以达到100)。到目前为止,一切都很好!我对AS3的新手很新,所以我感到有些迷失。

我需要显示他们设法达到的最高数字,我想对此有时间限制。在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 harald

只需创建一个变量,每当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) + "%";
}

启动计时器以重置您的最高级别var。这将向您展示每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);

最新更新