视频和swf的相对路径加载,卸载
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的相对路径加载,卸载的更多相关文章
- [Django] html 前端页面jQuery、图片等路径加载问题
严格的说这个话题应该属于一个html前端路径加载问题.为了实现一个局部更新页面的功能,简单了解了一下Ajax.Ajax是一个为了实现浏览器和服务器异步通信功能的模块.严格来说不是一个新的语言,只是JS ...
- Oracle直接路径加载--append的深度解析
㈠ 直接路径加载和buffer cache 直接路径插入的数据不经过buffer cache,从PGA直接把数据格式化成Oracle块 然后由普通的Oracle ...
- HttpRunner3源码阅读:4. loader项目路径加载,用例文件转换、方法字典生成
loader.py 这个文件中主要是对yaml,json用例加载转换成用例处理, 预置函数加载成方法字典,路径加载等 可用资料 [importlib]. https://docs.python.org ...
- [转][osg]关于PagedLOD 加载卸载机制
你的PagedLOD 为什么没有卸载 转自:http://bbs.osgchina.org/forum.php?mod=viewthread&tid=7612&highlight=Pa ...
- Linux设备驱动程序加载/卸载方法 insmod和modprobe命令
linux加载/卸载驱动有两种方法. 1.modprobe 注:在使用这个命令加载模块前先使用depmod -a命令生成modules.dep文件,该文件位于/lib/modules/$(uname ...
- c#动态加载卸载DLL的方法
这篇文章介绍了c#动态加载卸载DLL的方法,有需要的朋友可以参考一下 c#中通过反射可以方便的动态加载dll程序集,但是如果你需要对dll进行更新,却发现.net类库没有提供卸载dll程序集的方法.在 ...
- 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 ...
- 【requireJS路径加载】与程序员小卡的交流
这两天正好看到了程序员小卡同学的一篇博客,里面对requireJS路径的解析做了一些说明,里面有点问题待解决,我这里正好知道一点,所以整理成文,不知对小卡同学是否有帮助. http://www.cnb ...
- Android根据文件路径加载指定文件
Android根据指定的文件路径加载指定文件格式(图片格式 png, gif,jpg jpeg)的文件相关信息的列表. 如图: 代码: public class Util { /**** * 计算文件 ...
随机推荐
- SQLServer调WebService & 错误解决:请求格式无法识别
(sqlServer 2008 + VS2010) 首先,对服务器进行配置. sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGU ...
- 从npm 角度理解 mvn 的 pom.xml
从npm 角度理解 mvn 的 pom.xml pom -- project object model. 用于描述项目的配置: 基础说明 依赖 如何构建运行 类似 node.js 的 package. ...
- PythonStudy——三元表达式 Ternary expression
Python中的三目运算其实就是if...else...的语法糖 # 三目运算符:用于简化 if...else...的语法结构# -- 1) 只能解决if...else...结构,其他if分支结构都不 ...
- 剑指offer 2.字符串 替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. public class Re ...
- c语言fork 多进程
fork函数的作用 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两 ...
- 被称为“开发者神器”的GitHub,到底该怎么用?
被称为“开发者神器”的GitHub,到底该怎么用? 原文:https://baijiahao.baidu.com/s?id=1594232691312740966&wfr=spider& ...
- mmap映射区和shm共享内存的区别总结
[转载]原文链接:https://blog.csdn.net/hj605635529/article/details/73163513 linux中的两种共享内存.一种是我们的IPC通信System ...
- (整理)MySQL_REHL6.5 MySQL5.5 中文支持问题
1 查看字符集命令 SHOW VARIABLES LIKE ‘character%’; 2 修改my.cnf文件中来实现中文支持 2.1 复制my.cnf 安装结束后,etc目录下并没有my.cnf文 ...
- 用GDB调试程序(五)
查看运行时数据——————— 在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据.print命令的格式是: ...
- Vue的路由实现:hash模式 和 history模式
hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用 window.location.hash 读取.特点:hash虽然在URL中,但不被包括在HTTP请求中:用来指导浏览器动作, ...