0

As3 では、以下のコードは分と秒を取得します。

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

しかし、1 時間を超えるオーディオ トークを聞いている場合はどうでしょうか。

mp3 トークから時間を取得するために必要な計算は何ですか?

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

2 に答える 2

1

これは私の変換方法です:

    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」を追加する別のユーティリティです。

于 2013-02-13T20:39:09.417 に答える
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.
于 2013-02-13T20:49:33.947 に答える