Flex:将 VideoPlayer.currentTime 转换为字符串“00:00:00:000”

发布于 2024-09-02 01:41:18 字数 2370 浏览 4 评论 0原文

这个怎么样:

我想将flex内的videoPlayer组件显示的currentTime格式化,例如:8230.999到01:59:59:999,即“小时:分钟:秒:毫秒”

我尝试了不同的代码集,但它们无法使其工作,因为 currentTime 也不是正确的毫秒时间,因为它在秒中添加了一个浮动的 3 位数字点;

所以不是: 2000ms 它输出 2.000

像我这样的人无法理解!

感谢您的帮助:)

### UPDATE

我仍然有毫秒的问题。 这是当前的 MXML:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[
            protected function convert_clickHandler(event:MouseEvent):void
            {
                var val:Number = new Number(inPut.text); //inPut.text = 1000.001

                //val = val * 1000;
                outPut.text = timeFormat(val);
            }
            public static function timeFormat(value:Number):String
            {
                var milliseconds:Number  = value % 1000;
                var seconds:Number  = Math.floor((value/1000) % 60);
                var minutes:Number  = Math.floor((value/60000) % 60);
                var hours:Number  = Math.floor((value/3600000) % 24);

                var s_miliseconds:String     = (milliseconds<10 ? "00" : (milliseconds<100 ? "0" : ""))+ String(milliseconds);
                var s_seconds:String     = seconds < 10 ? "0" + String(seconds) : String(seconds); 
                var s_minutes:String     = minutes < 10 ? "0" + String(minutes) : String(minutes); 
                var s_hours:String     = hours < 10 ? "0" + String(hours) : String(hours);

                return s_hours  + ":" + s_minutes  + ":" + s_seconds + '.'+s_miliseconds;
                // returns 00:00:01.000.0009999999999763531 should return 00:00:01.001
                // I still have problem with milliseconds
            }

        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:TextInput x="240" y="72" id="inPut" text="1000.001"/>
    <s:TextInput x="240" y="140" id="outPut"/>
    <s:Button x="274" y="107" label="convert" id="convert" click="convert_clickHandler(event)"/>
</s:Application>

what about this one:

I want to format the currentTime displayed by a videoPlayer component inside flex, something like : 8230.999 to something like 01:59:59:999 which is "hours:minutes:seconds:milliseconds"

I trie different sets of codes but they can't get it to work because currentTime is nor a correct miliseconds time as it adds a floating 3 digit point to seconds;

so instead of : 2000ms it outputs 2.000

something people like me just can't understand!

thanx for any help :)

### UPDATE

I still have problem with milliseconds.
here's the current MXML:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[
            protected function convert_clickHandler(event:MouseEvent):void
            {
                var val:Number = new Number(inPut.text); //inPut.text = 1000.001

                //val = val * 1000;
                outPut.text = timeFormat(val);
            }
            public static function timeFormat(value:Number):String
            {
                var milliseconds:Number  = value % 1000;
                var seconds:Number  = Math.floor((value/1000) % 60);
                var minutes:Number  = Math.floor((value/60000) % 60);
                var hours:Number  = Math.floor((value/3600000) % 24);

                var s_miliseconds:String     = (milliseconds<10 ? "00" : (milliseconds<100 ? "0" : ""))+ String(milliseconds);
                var s_seconds:String     = seconds < 10 ? "0" + String(seconds) : String(seconds); 
                var s_minutes:String     = minutes < 10 ? "0" + String(minutes) : String(minutes); 
                var s_hours:String     = hours < 10 ? "0" + String(hours) : String(hours);

                return s_hours  + ":" + s_minutes  + ":" + s_seconds + '.'+s_miliseconds;
                // returns 00:00:01.000.0009999999999763531 should return 00:00:01.001
                // I still have problem with milliseconds
            }

        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:TextInput x="240" y="72" id="inPut" text="1000.001"/>
    <s:TextInput x="240" y="140" id="outPut"/>
    <s:Button x="274" y="107" label="convert" id="convert" click="convert_clickHandler(event)"/>
</s:Application>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

美煞众生 2024-09-09 01:41:18

感谢 GlycerineZaren 并结合他们的建议,我想出了这个课程:

public class Format
    {

        public static function currentTime(value:Number):String //example value in mis: 1000
        {
            value = value * 1000; // convert video currentTime 1.000 to 1000

            var milliseconds:Number  = Math.round(((value/1000) % 1) * 1000);
            var seconds:Number  = Math.floor((value/1000) % 60);
            var minutes:Number  = Math.floor((value/60000) % 60);
            var hours:Number  = Math.floor((value/3600000) % 24);

            var s_miliseconds:String     = (milliseconds<10 ? "00" : (milliseconds<100 ? "0" : ""))+ String(milliseconds);
            var s_seconds:String     = seconds < 10 ? "0" + String(seconds) : String(seconds); 
            var s_minutes:String     = minutes < 10 ? "0" + String(minutes) : String(minutes); 
            var s_hours:String     = hours < 10 ? "0" + String(hours) : String(hours);

            return s_hours  + ":" + s_minutes  + ":" + s_seconds + '.'+s_miliseconds;

        }
    }

我这样使用它:

// caculate playhead time       
var value:Number = new Number(video_player_monitor.currentTime);
imghri_playhead.text = Format.currentTime(value);

希望它对其他人有帮助。再次感谢大家的支持;-)

Thanx to the help of both Glycerine and Zaren and by combining their suggestions, I come up with this class:

public class Format
    {

        public static function currentTime(value:Number):String //example value in mis: 1000
        {
            value = value * 1000; // convert video currentTime 1.000 to 1000

            var milliseconds:Number  = Math.round(((value/1000) % 1) * 1000);
            var seconds:Number  = Math.floor((value/1000) % 60);
            var minutes:Number  = Math.floor((value/60000) % 60);
            var hours:Number  = Math.floor((value/3600000) % 24);

            var s_miliseconds:String     = (milliseconds<10 ? "00" : (milliseconds<100 ? "0" : ""))+ String(milliseconds);
            var s_seconds:String     = seconds < 10 ? "0" + String(seconds) : String(seconds); 
            var s_minutes:String     = minutes < 10 ? "0" + String(minutes) : String(minutes); 
            var s_hours:String     = hours < 10 ? "0" + String(hours) : String(hours);

            return s_hours  + ":" + s_minutes  + ":" + s_seconds + '.'+s_miliseconds;

        }
    }

I use it like this:

// caculate playhead time       
var value:Number = new Number(video_player_monitor.currentTime);
imghri_playhead.text = Format.currentTime(value);

Hope it helps someone else. Again, Thank you guys for your support ;-)

夜未央樱花落 2024-09-09 01:41:18

正确的一个:

这是我做的。一个完整的班级。

package com.strangemother.utils
{
    public class Time extends Object
    {

        public function Time()
        {
        }

        public static function timeFormat(value:int):String
        {
            var seconds:Number  = value % 60;
            var minutes:Number  = Math.floor((value % 3600 ) /60);

            var minuteString:String     = minutes < 10 ? "0" + String(minutes) + ":" : String(minutes) + ":";   
            var secondString:String     = seconds < 10 ? "0" + String(seconds) : String(seconds);
            return minuteString + secondString;
        }


    }
}

这有效 - 谷歌搜索它。

var secondsPerMinute = 60;
var minutesPerHour = 60;
function convertSecondsToHHMMSS(intSecondsToConvert) {
var hours = convertHours(intSecondsToConvert);
var minutes = getRemainingMinutes(intSecondsToConvert);
minutes = (minutes == 60) ? "00" : minutes;
var seconds = getRemainingSeconds(intSecondsToConvert);
return hours+" : "+minutes+" : "+seconds;
}
function convertHours(intSeconds) {
var minutes = convertMinutes(intSeconds);
var hours = Math.floor(minutes/minutesPerHour);
return hours;
}
function convertMinutes(intSeconds) {
return Math.floor(intSeconds/secondsPerMinute);
}
function getRemainingSeconds(intTotalSeconds) {
return (intTotalSeconds%secondsPerMinute);
}
function getRemainingMinutes(intSeconds) {
var intTotalMinutes = convertMinutes(intSeconds);
return (intTotalMinutes%minutesPerHour);
}

trace(convertSecondsToHHMMSS(13345)); 

A correct one:

I made this one. A complete class.

package com.strangemother.utils
{
    public class Time extends Object
    {

        public function Time()
        {
        }

        public static function timeFormat(value:int):String
        {
            var seconds:Number  = value % 60;
            var minutes:Number  = Math.floor((value % 3600 ) /60);

            var minuteString:String     = minutes < 10 ? "0" + String(minutes) + ":" : String(minutes) + ":";   
            var secondString:String     = seconds < 10 ? "0" + String(seconds) : String(seconds);
            return minuteString + secondString;
        }


    }
}

this works - Googled it.

var secondsPerMinute = 60;
var minutesPerHour = 60;
function convertSecondsToHHMMSS(intSecondsToConvert) {
var hours = convertHours(intSecondsToConvert);
var minutes = getRemainingMinutes(intSecondsToConvert);
minutes = (minutes == 60) ? "00" : minutes;
var seconds = getRemainingSeconds(intSecondsToConvert);
return hours+" : "+minutes+" : "+seconds;
}
function convertHours(intSeconds) {
var minutes = convertMinutes(intSeconds);
var hours = Math.floor(minutes/minutesPerHour);
return hours;
}
function convertMinutes(intSeconds) {
return Math.floor(intSeconds/secondsPerMinute);
}
function getRemainingSeconds(intTotalSeconds) {
return (intTotalSeconds%secondsPerMinute);
}
function getRemainingMinutes(intSeconds) {
var intTotalMinutes = convertMinutes(intSeconds);
return (intTotalMinutes%minutesPerHour);
}

trace(convertSecondsToHHMMSS(13345)); 
凝望流年 2024-09-09 01:41:18

我倾向于使用日期格式化程序来生成正确的输出...

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Script>
    <![CDATA[
        public var seconds:Number = 10000;

        private function formatTime(event:MouseEvent):void
        {
            var stamp:Date = new Date(0, 0, 0, 0, 0, seconds, 0)
            txtTime.text = fmtTime.format(stamp); 
        }
     ]]>
     </mx:Script>
     <mx:DateFormatter id="fmtTime" formatString="JJ:NN:SS"/>
     <mx:Text id="txtTime" text=""/>
     <mx:Button click="formatTime(event)"/>
</mx:Application>

我希望这对您有所帮助。

I tend to use a Date formatter to generate the proper output...

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Script>
    <![CDATA[
        public var seconds:Number = 10000;

        private function formatTime(event:MouseEvent):void
        {
            var stamp:Date = new Date(0, 0, 0, 0, 0, seconds, 0)
            txtTime.text = fmtTime.format(stamp); 
        }
     ]]>
     </mx:Script>
     <mx:DateFormatter id="fmtTime" formatString="JJ:NN:SS"/>
     <mx:Text id="txtTime" text=""/>
     <mx:Button click="formatTime(event)"/>
</mx:Application>

I hope that helps you out.

始于初秋 2024-09-09 01:41:18

我需要将“00:02:31:76”这样的字符串转换为秒数。如果有人感兴趣,这是该类:


package {

public class ConvertStringToTime {

    public static function processTimeString(timeString:String):Number {

        var timePieceArray:Array = timeString.split(":");

        var milliseconds:Number = Number(timePieceArray[3])/100;
        var seconds:Number = Number(timePieceArray[2]);
        var minutesInSeconds:Number = Number(timePieceArray[1])*60;
        var hoursInSeconds:Number = Number(timePieceArray[0])*60*60;

        var timeInSeconds:Number = hoursInSeconds + minutesInSeconds + seconds + milliseconds

        return timeInSeconds;
    }

}

}

然后,如果我想使用它,我可以调用,例如:
跟踪(ConvertStringToTime.processTimeString(“00:02:03:25”));

I needed to convert a string like "00:02:31:76" to a number of seconds. If anyone is interested, here's the class for that:


package {

public class ConvertStringToTime {

    public static function processTimeString(timeString:String):Number {

        var timePieceArray:Array = timeString.split(":");

        var milliseconds:Number = Number(timePieceArray[3])/100;
        var seconds:Number = Number(timePieceArray[2]);
        var minutesInSeconds:Number = Number(timePieceArray[1])*60;
        var hoursInSeconds:Number = Number(timePieceArray[0])*60*60;

        var timeInSeconds:Number = hoursInSeconds + minutesInSeconds + seconds + milliseconds

        return timeInSeconds;
    }

}

}

Then, if I want to use it, I can call, for example:
trace(ConvertStringToTime.processTimeString("00:02:03:25"));

咆哮 2024-09-09 01:41:18

为什么不在这里:

var time:String = getTimeString(4200000);trace( time );
function getTimeString($milliSeconds:int) : String
{
    var seconds:int = ($milliSeconds /1000)%60;
    var minutes:int = (($milliSeconds /1000)/60)%60;
    var hours:int = $milliSeconds /1000/60/60;

    var h:String = hours<10 ? '0' + hours : ''+hours;
    var m:String = minutes<10 ? '0' + minutes : ''+minutes;
    var s:String = seconds<10 ? '0' + seconds : ''+seconds;

    return h+':'+m+':'+s;
}

Why not this here:

var time:String = getTimeString(4200000);trace( time );
function getTimeString($milliSeconds:int) : String
{
    var seconds:int = ($milliSeconds /1000)%60;
    var minutes:int = (($milliSeconds /1000)/60)%60;
    var hours:int = $milliSeconds /1000/60/60;

    var h:String = hours<10 ? '0' + hours : ''+hours;
    var m:String = minutes<10 ? '0' + minutes : ''+minutes;
    var s:String = seconds<10 ? '0' + seconds : ''+seconds;

    return h+':'+m+':'+s;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文