动作脚本 3 - AS3 在 MP3 中以毫秒为单位获取"hours"



在As3中,下面的代码获取分钟和秒:

var minutes:uint = Math.floor(PrayPrayer.position / 1000 / 60);
var seconds:uint = Math.floor(PrayPrayer.position / 1000) % 60;

但是,如果你正在听一个超过一小时的音频讲话呢?

从mp3通话中获得小时数需要什么数学

 var hours:uint = Math.floor(PrayPrayer.position / 1000) % 60    & (((???????)));

这是我的转换方法:

    public static var MINUTE:Number = 60;
    public static var HOUR:Number = 60 * MINUTE;
    public static var DAY:Number = 24 * HOUR;
        /**
     * returns string created from seconds value in following format hours:minutes:seconds, i.e. 121 seconds will be displayed as 00:02:01
     * @param   seconds <i>Number</i>
     * @return <i>String</i>
     */
    public static function secondsToHMS(seconds:Number, doNotRound:Boolean = false):String
    {
        var _bNegative:Boolean = seconds < 0;
        seconds = Math.abs(seconds);
        var time:Number = (doNotRound) ? seconds:Math.round(seconds);
        var ms:Number;
        var msec:String;
        if (doNotRound)
        {
            ms = seconds - (seconds | 0);
            msec = prependZeros((ms * 1000) | 0, 3);
        }

        var sec:Number = (time | 0) % MINUTE;
        var min:Number = Math.floor((time / MINUTE) % MINUTE);
        var hrs:Number = Math.floor(time / HOUR);
        //
        return (_bNegative ? "-":"") +
               ((hrs > 9) ? "":"0") + hrs + ":" +
               ((min > 9) ? "":"0") + min + ":" +
               ((sec > 9) ? "":"0") + sec +
               (doNotRound ? "." + msec:"");
    }

prependZeros是在给定字符串前面添加"0"的另一个实用程序。

所以PrayPrayer.position以毫秒为单位。你的minutes线除以1000得到秒,然后除以60从秒到分钟。您的seconds行正在查看剩余部分。

您在hours行中开始使用的是%,所以我们将看看剩余部分——您在那里使用的是秒。%是模运算符。它给出整数除法的余数。所以你的线路

var seconds:uint = Math.floor(PrayPrayer.position / 1000) % 60;

正在计算秒数(PrayPrayer.position/1000),它可能是2337之类的大数字,除以60,然后保留余数。2337/60=38余数57,因此2337%60将为57。

找到时间的一个简单方法是在你的分钟数上使用同样的技巧。

var minutes:uint = Math.floor(PrayPrayer.position / 1000 / 60);
var seconds:uint = Math.floor(PrayPrayer.position / 1000) % 60;
var hours:uint = Math.floor(minutes / 60);
minutes %= 60;  // same as minutes = minutes % 60.  Forces minutes to be between 0 and 59.

相关内容

  • 没有找到相关文章

最新更新