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. Ubuntu16.04安装yum的一种方式

    1. 首先检测是否安装 build-essential 包 sudo apt-get install build-essential 2.安装yum sudo apt-get install yum ...

  2. wikipedia 维基百科 语料 获取 与 提取 处理 by python3.5

    英文维基百科 https://dumps.wikimedia.org/enwiki/ 中文维基百科 https://dumps.wikimedia.org/zhwiki/ 全部语言的列表 https: ...

  3. [Java] 方法 -- 繼承關係

    public class test { void show() { System.out.println("父類別"); } } public class test2 extend ...

  4. git grep的一些用法

    https://www.kernel.org/pub/software/scm/git/docs/git-grep.html   把所有本地分支包含某个字符的行列出来,把含有master的列出来 gi ...

  5. linux查看进程启动的时间点

    ps -ef |grep xxx  # 先查找进程pid ps -wo pid,lstart -p {pid}

  6. [C#]时间格式和字符串的相互转换

    一.字符串转化为时间格式 string date = "2018/9/27 10:53:56"; DateTime dt1 = DateTime.Parse(date);//方式1 ...

  7. 使用Intellij搭建Servlet开发环境

    https://blog.csdn.net/yhao2014/article/details/45740111 使用Tomcat 9时,必须使用jre 1.8,否则会出现Unable to ping ...

  8. Excel技巧--单列变多行

    当上图的单列转变成多行时,可以这么做: 1.在第一行输入A2.A3,向右拖拉第一行: 2.第二行按第一行最右顺序,写下A12,再向右拖拉出第二行: 3.选择这两行,再拖拉出一串连续顺序的多行来: 4. ...

  9. 手把手教你实现 Google 拓展插件(转自实验楼)

    一.课程简介 1.1 实验介绍 本课程的实验环境由实验楼提供,Google 浏览器拓展的运行环境为 Google 浏览器.在本实验中,你将了解如何制作一个属于你自己的 Google 拓展插件. 课程实 ...

  10. SpringBoot项目单元测试

    关于SpringBoot的单元测试,描述一下三种单元测试的方式. 1.约定 单元测试代码写在src/test/java目录下单元测试类命名为*Test,前缀为要测试的类名 2. 使用mock方式单元测 ...