加载视频看完重看,有拖动
package com{ import flash.display.MovieClip; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.AsyncErrorEvent; import flash.events.MouseEvent; import flash.media.Video; import flash.display.SimpleButton; import flash.events.Event; import flash.display.Loader; import flash.net.URLLoader; import flash.net.URLRequest; import flash.utils.Timer; import flash.events.TimerEvent; import flash.system.fscommand; import flash.media.SoundMixer; import flash.media.SoundTransform; import flash.display.Stage; import flash.geom.Rectangle; public class ZYZLoader extends MovieClip { public static var nc:NetConnection; public static var ns:NetStream; public static var vid:Video; public static var emptyMc:MovieClip; public static var vidTotalTime:Number; public static var vidNowTime:Number; public static var obj:Object =new Object (); public static var videoPath:String; public static var vidProgressNum:Number; public static var soundTF:SoundTransform; public static var loader:Loader; public static var urlR:URLRequest; public static var backBtn:SimpleButton; public static var timer:Timer = new Timer(25); public static var thisMc:MovieClip; public static var stageMc:Stage; //视频==================================================================================================== public function ZYZLoader(_thisMc:MovieClip ,_stageMc:Stage) { thisMc = _thisMc; stageMc = _stageMc; } public function vidFun() { nc= new NetConnection(); nc.connect(null); ns = new NetStream(nc); ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); ns.close(); vid = new Video(1920,1080); function asyncErrorHandler(event:AsyncErrorEvent ):void { // 忽略错误 } //vid.x=167.25; //vid.y=92.45; obj.onMetaData = onMetaData; ns.client = obj; function onMetaData(data:Object):void { vidTotalTime = data.duration; } vid.attachNetStream(ns); ns.pause(); vid.smoothing = true; } //加载==================================================================================================== public static function addMP4(str:String,_emptyMc:MovieClip,num:Number ) { emptyMc = _emptyMc; var string = stageMc.loaderInfo.url; var str1:int = string.lastIndexOf("/"); var str2:String = string.slice(0,str1 + 1); ns.play(str2+"vid/"+str+".mp4"); emptyMc.addChildAt(vid,num); if (timer.hasEventListener(TimerEvent.TIMER)==false) { timer.addEventListener(TimerEvent.TIMER,timerFun); timer.start(); } } public static function timerFun(e:TimerEvent) { vidNowTime = ns.time; dragMc.x = int(lineMc.width * vidNowTime / vidTotalTime) + lineMc.x; var i:int = vidNowTime * lineMc.totalFrames / vidTotalTime; lineMc.gotoAndStop(i); trace("zx") if (vidTotalTime-vidNowTime<0.05||emptyMc.numChildren==0) { //timer.removeEventListener(TimerEvent.TIMER,timerFun); ns.pause(); againBtn.visible = true timer.stop() trace("stop") } } //卸载==================================================================================================== public static function removeMP4() { if (ns.time != 0) { ns.close(); emptyMc.removeChild(vid); timer.removeEventListener(TimerEvent.TIMER,timerFun); } } //加载swf====================================================================================================== public static function addSwf(swfStr:String,_emptyMc:MovieClip,num:Number ) { emptyMc = _emptyMc; removeMP4(); if (emptyMc.numChildren != 0) { loader.unloadAndStop(); while (emptyMc.numChildren>0) { emptyMc.removeChildAt(0); } } if (emptyMc.numChildren == 0) { var string = stageMc.loaderInfo.url; var str1:int = string.lastIndexOf("/"); var str2:String = string.slice(0,str1 + 1); loader= new Loader(); urlR = new URLRequest(str2+swfStr+".swf"); loader.load(urlR); emptyMc.addChildAt(loader,num); //var loaderContent=loader.content; //trace(loaderContent.totalFrames) //loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoader); } } /*public static function onLoader(e:Event) { loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onLoader); emptyMc.addChildAt(loader,0); }*/ public static function removeSwf() { if (emptyMc.numChildren != 0) { loader.unloadAndStop(); while (emptyMc.numChildren>0) { emptyMc.removeChildAt(0); } } } //清空emptyMc public static function clearEmpty() { if (ns.time != 0) { ns.close(); emptyMc.removeChild(vid); } if (emptyMc.numChildren != 0) { loader.unloadAndStop(); while (emptyMc.numChildren>0) { emptyMc.removeChildAt(0); } } } public static var lineMcWidth:Number; public static var lineMcX:Number; public static var mcN:uint; public static var bounds:Rectangle; public static var againBtn:SimpleButton=new SimpleButton() public static var dragMc:MovieClip; public static var lineMc:MovieClip; public static function FlvFun(_dragMc:MovieClip ,_lineMc:MovieClip ,_stageMc:Stage ,_againBtn:SimpleButton) { againBtn = _againBtn; dragMc = _dragMc; lineMc = _lineMc; stageMc = _stageMc; lineMc.stop(); dragMc.x = lineMc.x; dragMc.y = lineMc.y; lineMcX = lineMc.x; bounds = new Rectangle(lineMc.x,lineMc.y,lineMc.width,0); againBtn.visible = false; dragMc.buttonMode = true; dragMc.addEventListener(MouseEvent.MOUSE_DOWN,dragFun); againBtn.addEventListener(MouseEvent.CLICK,onAgain); } public static function onAgain(e:MouseEvent):void { againBtn.visible = false; lineMc.gotoAndStop(1) dragMc.x=lineMc.x ns.seek(0) ns.resume() timer.start(); trace("start") } public static function dragFun(e:MouseEvent):void { if (e.type == "mouseDown") { e.target.startDrag(false,bounds); dragMc.addEventListener(MouseEvent.MOUSE_MOVE,dragFun); timer.stop(); stageMc.addEventListener(MouseEvent.MOUSE_UP,dragFun); } else if (e.type=="mouseUp") { dragMc.stopDrag(); timer.start(); dragMc.removeEventListener(MouseEvent.MOUSE_MOVE,dragFun); stageMc.removeEventListener(MouseEvent.MOUSE_UP,dragFun); } else if (e.type=="mouseMove") { vidProgressNum=vidTotalTime*(dragMc.x-lineMc.x)/lineMc.width ; ns.seek(vidProgressNum); var i:int=lineMc.totalFrames*(dragMc.x-lineMc.x)/lineMc.width; lineMc.gotoAndStop(i); } } //================togglePause public static var togglePause:MovieClip; public static function togglePauseFun(_togglePause:MovieClip) { togglePause = _togglePause; togglePause.stop(); togglePause.addEventListener(MouseEvent.CLICK,ontogglePause); } public static function ontogglePause(e:MouseEvent) { if (togglePause.currentFrame == 1) { togglePause.gotoAndStop(2); } else { togglePause.gotoAndStop(1); } ns.togglePause(); } //声音========================= public static var voiceMc:MovieClip; public static var rec:Rectangle; public static function voiceFun(_voiceMc:MovieClip) { voiceMc = _voiceMc; voiceMc.stop(); voiceMc.addEventListener(MouseEvent.MOUSE_UP ,onVoice); } public static function onVoice(e:MouseEvent ) { if (voiceMc.currentFrame == 1) { voiceMc.nextFrame(); soundTF = ns.soundTransform;//控制的目标 soundTF.volume = 0;//设置目标的声音为0 ns.soundTransform = soundTF; } else { voiceMc.prevFrame(); soundTF = ns.soundTransform;//控制的目标 soundTF.volume = 1;//设置目标的声音为0 ns.soundTransform = soundTF; } } } }
posted on 2019-04-29 13:49 zqiang0803 阅读(223) 评论(0) 编辑 收藏 举报