在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 & (((???????)));
答案 0 :(得分: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”的实用程序。
答案 1 :(得分: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.