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 MainLoader 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 MainLoader(_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);
if (vidTotalTime-vidNowTime<0.05||emptyMc.numChildren==0) {
timer.removeEventListener(TimerEvent.TIMER,timerFun);
ns.pause();
}
} //卸载====================================================================================================
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 dragMc:MovieClip;
public static var lineMc:MovieClip;
public static function FlvFun(_dragMc:MovieClip ,_lineMc:MovieClip ,_stageMc:Stage ) { 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); dragMc.buttonMode=true;
dragMc.addEventListener(MouseEvent.MOUSE_DOWN,dragFun);
dragMc.addEventListener(MouseEvent.MOUSE_UP,dragFun);
stageMc.addEventListener(MouseEvent.MOUSE_UP,dragFun); }
public static function dragFun(e:MouseEvent):void {
if (e.type=="mouseDown") {
e.target.startDrag(false,bounds);
dragMc.addEventListener(MouseEvent.MOUSE_MOVE,dragFun);
timer.stop();
} else if (e.type=="mouseUp") {
dragMc.stopDrag();
timer.start();
dragMc.removeEventListener(MouseEvent.MOUSE_MOVE,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;
} } }
}

视频和swf的相对路径加载,卸载的更多相关文章

  1. [Django] html 前端页面jQuery、图片等路径加载问题

    严格的说这个话题应该属于一个html前端路径加载问题.为了实现一个局部更新页面的功能,简单了解了一下Ajax.Ajax是一个为了实现浏览器和服务器异步通信功能的模块.严格来说不是一个新的语言,只是JS ...

  2. Oracle直接路径加载--append的深度解析

    ㈠ 直接路径加载和buffer cache              直接路径插入的数据不经过buffer cache,从PGA直接把数据格式化成Oracle块       然后由普通的Oracle ...

  3. HttpRunner3源码阅读:4. loader项目路径加载,用例文件转换、方法字典生成

    loader.py 这个文件中主要是对yaml,json用例加载转换成用例处理, 预置函数加载成方法字典,路径加载等 可用资料 [importlib]. https://docs.python.org ...

  4. [转][osg]关于PagedLOD 加载卸载机制

    你的PagedLOD 为什么没有卸载 转自:http://bbs.osgchina.org/forum.php?mod=viewthread&tid=7612&highlight=Pa ...

  5. Linux设备驱动程序加载/卸载方法 insmod和modprobe命令

    linux加载/卸载驱动有两种方法. 1.modprobe 注:在使用这个命令加载模块前先使用depmod -a命令生成modules.dep文件,该文件位于/lib/modules/$(uname ...

  6. c#动态加载卸载DLL的方法

    这篇文章介绍了c#动态加载卸载DLL的方法,有需要的朋友可以参考一下 c#中通过反射可以方便的动态加载dll程序集,但是如果你需要对dll进行更新,却发现.net类库没有提供卸载dll程序集的方法.在 ...

  7. 2018-2-13-C#-动态加载卸载-DLL

    title author date CreateTime categories C# 动态加载卸载 DLL lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...

  8. 【requireJS路径加载】与程序员小卡的交流

    这两天正好看到了程序员小卡同学的一篇博客,里面对requireJS路径的解析做了一些说明,里面有点问题待解决,我这里正好知道一点,所以整理成文,不知对小卡同学是否有帮助. http://www.cnb ...

  9. Android根据文件路径加载指定文件

    Android根据指定的文件路径加载指定文件格式(图片格式 png, gif,jpg jpeg)的文件相关信息的列表. 如图: 代码: public class Util { /**** * 计算文件 ...

随机推荐

  1. ue4 C++ 生成并弹出一个菜单

    FGlobalSettingModule& GSettingMod = FModuleManager::LoadModuleChecked<FGlobalSettingModule> ...

  2. Javascript 2.3

    声明多个变量用逗号隔开    var teacher=30,stu=40; Javascript变量允许包含 美元符号  $

  3. how to tell gcc with c99 enable

    just copy the make file here. CC = gccCFLAGS = -Wall -std=c99OUTFILE = outputfileOBJS = source.oSRCS ...

  4. oracle-rman-3

    http://blog.csdn.net/leshami/article/details/6032525 rman概述及体系结构 http://blog.itpub.net/23513800/view ...

  5. Java方法的静态绑定与动态绑定讲解(向上转型的运行机制详解)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6554103.html 一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定.绑定分为静态绑定(前期绑 ...

  6. SpringBoot RestFul风格API接口开发

    本文介绍在使用springBoot如何进行Restful Api接口的开发及相关注解已经参数传递如何处理. 一.概念: REST全称是Representational State Transfer,中 ...

  7. 移植Valgrind检测Android JNI内存泄漏

    1.相关工具 Valgrind:从Valgrind官网下载最新的源码包,我这里用的是:valgrind 3.14.0 (tar.bz2) [17MB] - 9 October 2018. Ubuntu ...

  8. python之路——13

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.函数 1.函数的定义和调用 2.参数及传递顺序 形参角度: 位置参数:*args:默认参数:**k ...

  9. Python教程:进击机器学习(五)--Scipy《转》

    Scipy简介 文件输入和输出scipyio 线性代数操作scipylinalg 快速傅里叶变换scipyfftpack 优化器scipyoptimize 统计工具scipystats Scipy简介 ...

  10. WordPress版微信小程序2.1.8版发布

    近来的工作比较多,同时也在思考这个项目未来的发展方向,尽管不断有新的wordpress站长,利用我的开源程序搭建了微信小程序,但个人对这个项目的热情日渐减少,促使我不断完善和维护这个开源项目的动力也再 ...