Flex 4 spark Video Player如何从currentTime播放

时间:2011-02-08 11:23:59

标签: flash flex adobe flexbuilder flex-spark

有4个视频源,因此用户可以使用相同的视频进度进行切换。

我该如何实现? 功能seek(time:duration):void并没有真正起作用。 : - (

我使用的代码:

<?xml version="1.0" encoding="utf-8"?>

    

<fx:Script>
    <![CDATA[
        import mx.events.VideoEvent;

        import org.osmf.media.MediaPlayer;
        import org.osmf.video.CuePoint;

        protected function button1_clickHandler(event:MouseEvent):void
        {
            var playing:Boolean=VideoPlr.playing;
            var time:Number = VideoPlr.currentTime;
            VideoPlr.source = "http://helpexamples.com/flash/video/water.flv";
            // dosn't work this.VideoPlr.seek(VideoPlr.duration * time / 100);
            if(playing) VideoPlr.play();
        }


        protected function button2_clickHandler(event:MouseEvent):void
        {
            var playing:Boolean=VideoPlr.playing;
            var time:Number = VideoPlr.currentTime;
            VideoPlr.source = "http://helpexamples.com/flash/video/clouds.flv";
            // dosn't work this.VideoPlr.seek(VideoPlr.duration * time / 100);

            if(playing) VideoPlr.play();
        }


        protected function button3_clickHandler(event:MouseEvent):void
        {
            var playing:Boolean=VideoPlr.playing;
            var time:Number = VideoPlr.currentTime;
            VideoPlr.source = "http://helpexamples.com/flash/video/cuepoints.flv";
            // dosn't work this.VideoPlr.seek(VideoPlr.duration * time / 100);
            if(playing) VideoPlr.play();
        }


        protected function button4_clickHandler(event:MouseEvent):void
        {
            var playing:Boolean=VideoPlr.playing;
            var time:Number = VideoPlr.currentTime;
            //VideoPlr.source = "http://helpexamples.com/flash/video/cuepoints.flv";
            if(playing) VideoPlr.play();
        }

    ]]>
</fx:Script>
<s:VideoPlayer x="26" y="10" height="588" width="1081" autoPlay="false" 
               source="http://helpexamples.com/flash/video/water.flv" 
              id="VideoPlr" muted="false" pauseWhenHidden="true" 

感谢你的期待

1 个答案:

答案 0 :(得分:1)

这是我的解决方案:

您可以在deisgne中切换四个文件。每个开关都会在新的源文件中跳转到时间。

<?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"
               creationComplete="createHandler();">
    <s:layout>
        <s:BasicLayout/>
    </s:layout>

    <fx:Script>
        <![CDATA[
            import flash.events.TimerEvent; //very important
            import flash.utils.Timer; //very important

            import flashx.textLayout.events.UpdateCompleteEvent;

            import mx.events.VideoEvent;

            import org.osmf.events.MediaElementEvent;
            import org.osmf.events.MediaPlayerStateChangeEvent;
            import org.osmf.media.MediaPlayer;
            import org.osmf.media.MediaPlayerState;


            private var time:Number=0;
            private var changed:Boolean = false;

            protected function normal_clickHandler(event:MouseEvent):void
            {
                ini();
                Text.text = "current Tume: "+time
                vid.source="1.flv"
            }
            protected function ini():void{
                if(vid.currentTime>0){
                    time = Math.round(vid.currentTime);
                    changed = true;
                    timer.reset();
                    timer.start();
                }
            }
            protected function nurhoer_clickHandler(event:MouseEvent):void
            {
                ini();
                vid.source="2.flv"
                Text.text = "current Tume: "+time;
            }


            protected function schwerh_clickHandler(event:MouseEvent):void
            {
                ini();
                Text.text = "current Tume: "+time;
                vid.source="3.flv"
            }

            protected function schwerhmH_clickHandler(event:MouseEvent):void
            {
                ini();
                Text.text = "current Tume: "+time;
                vid.source="4.flv"
            }
            protected var timer:flash.utils.Timer = new Timer(200,2);   
            private function createHandler():void
            {
                try{
                    timer.addEventListener(flash.events.TimerEvent.TIMER, repeat);
                    timer.addEventListener(flash.events.TimerEvent.TIMER_COMPLETE, repeat);
                    //console.text = "Events are loaded2!";
                }catch(exep){}
            }
            source="{source}" />
            private function repeat(event:flash.events.TimerEvent):void{
                if(!vid.playing){   
                try{

                        if(changed && Math.round(vid.currentTime)!= Math.round(time)){
//                          console.text = console.text +"\n"+"try to seek to: "+time;
                            vid.seek(time);
                            changed=false;
                        }else {
                            timer.reset();
                            timer.stop();
                            vid.play();
                        }
                    }catch (ex){}

                }
            }





        ]]>
    </fx:Script>
谢谢你的克制。