目录

一、目的:

1、Flash全屏播放外部多个Flv视频并且按键进行切换+全屏播放外部Flv视频+指定元件播放外部Flv视频(非全屏),所以将其记录下来

二、参考:

1、[AS3编程教学]如何加载并播放Flv视频

三、操作:全屏播放外部多个Flv视频+按键模拟进行视频的切换

1、运行效果:

1、代码:写在关键帧里面

2、写在关键帧里面

3、视频文件放的位置

三、操作:全屏播放外部Flv视频(传感器与物联网多多参考)

1、注意:

2、代码:播放外部视频

三、操作:指定元件播放外部Flv视频(非全屏)(可以作为遮罩来播放)

1、播放视频的视频框:图片格式要求

2、效果

3、代码:2.0版本

3、代码: 1.0版本

三、操作:人体免疫中解决循环播放待机视频长时间会黑屏的情况

1、因为其他几个播放视频是播放一次,但是在人体免疫项目中出现了,循环播放待机视频时候出现了黑屏,所以总结一下

1、代码

四、注意:

1、这个方法flv和mp4都可以播放,制作猜猜它是谁的时候发现,mp4狸窝转换为flv时候,前面几秒不见了。所以最好不进行转换

2、如果循环不断的播放某个视频时候,长时间播放容易造成黑屏(人体免疫项目循环播放待机视频时候遇到了),需要remove视频时候全部remove,再加载视频;


一、目的:

1、Flash全屏播放外部多个Flv视频并且按键进行切换+全屏播放外部Flv视频+指定元件播放外部Flv视频(非全屏),所以将其记录下来

二、参考:

1、[AS3编程教学]如何加载并播放Flv视频

https://jingyan.baidu.com/article/fc07f9897ed70612fee5197c.html

  • 总结:good:很好用,并且能够实现,目前知道flv、mp4都可以播放;but:如果循环不断的播放某个视频时候容易造成黑屏,需要remove视频时候全部remove,再加载;下面是我修改编写的,以及需要注意的地方

三、操作:全屏播放外部多个Flv视频+按键模拟进行视频的切换

1、运行效果:

  • 总结:循环播放和播放一次就移除视频都是可以实现的
  • 总结:按键模拟进行视频的切换多次,查看任务管理器CPU、内存都没有增加,所以方法可行

1、代码:写在关键帧里面

import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;fscommand("fullscreen","true");stop();var theVideo:Video = null;//视频对象
var netConnection:NetConnection = null;//连接对象
var netStream:NetStream = null;//数据流对象//播放视频数组
var arr_videoName:Array = null;Start_video();//初始化界面
function Start_video()
{//发现只能播放flv,mp4播放不了arr_videoName = new Array("视频/壁虎.flv","视频/考拉.flv","视频/羚羊.flv","视频/沙锥.flv","视频/兔子.flv","视频/犀牛.flv");CreateVideo();//按键抬起:创建;if (! stage.hasEventListener(KeyboardEvent.KEY_UP)){stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp_video);}}//离开界面需要移除一些东西
function Destroy_video()
{//按键抬起:注销if (stage.hasEventListener(KeyboardEvent.KEY_UP)){stage.removeEventListener(KeyboardEvent.KEY_UP,KeyUp_video);}RemoveVedio();
}//按键抬起
function KeyUp_video(e:KeyboardEvent)
{trace(e.keyCode);switch (e.keyCode-48){case 0 :PlayVideo(0);break;case 1 :PlayVideo(1);break;case 2 :PlayVideo(2);break;case 3 :PlayVideo(3);break;case 4 :PlayVideo(4);break;case 5 :PlayVideo(5);break;}
}//创建视频
function CreateVideo():void
{if (theVideo==null){theVideo = new Video(1920,1080);theVideo.x = theVideo.y = 0;addChild(theVideo);}if (netConnection==null){netConnection = new NetConnection();netConnection.connect(null);}if (netStream==null){netStream = new NetStream(netConnection);netStream.client = this;}if (theVideo!=null&&netStream!=null){theVideo.attachNetStream(netStream);}}//netStatus 事件对象的 type 属性值
function netStatusHandler(e:NetStatusEvent):void
{var evtCode:String = e.info.code;switch (evtCode){case "NetStream.Play.Start" :trace("开始播放");break;case "NetStream.Play.Empty" :trace("缓冲区为空");break;case "NetStream.Play.Full" :trace("缓冲区已满");break;case "NetStream.Play.StreamNotFound" :trace("没有找到文件");break;case "NetStream.Play.Stop" ://循环播放trace("一次播放完毕,从头开始");netStream.pause();netStream.seek(0);netStream.resume();播放一次卸载视频;//RemoveVedio();break;}
}//卸载视频
function RemoveVedio():void
{if (netStream!=null){netStream.pause();netStream.dispose();if (netStream.hasEventListener(NetStatusEvent.NET_STATUS)){netStream.removeEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);}netStream = null;}if (netConnection!=null){netConnection = null;}if (theVideo!=null){theVideo.clear();if (theVideo.parent.contains(theVideo)){removeChild(theVideo);}theVideo = null;}}//播放和切换视频视频
function PlayVideo(_e:int)
{if (_e>=0&&_e<=arr_videoName.length-1){CreateVideo();netStream.play(arr_videoName[_e]);if (! netStream.hasEventListener(NetStatusEvent.NET_STATUS)){netStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);}}}

2、写在关键帧里面

3、视频文件放的位置

三、操作:全屏播放外部Flv视频(传感器与物联网多多参考)

1、注意:

  • 总结:视频和Flash再同一目录,视频名字叫做 测试.flv
  • 总结:一定要卸载视频,否则会造成内存泄露
  • 总结:如果添加了文本类的话会一直报错显示onMate什么的错误,所以不做文本类,就做第一帧做配置文件(这个问题后面”操作:指定元件播放外部Flv视频“里面有介绍可以解决)
  • 总结:注意播放完毕后先将其暂停,然后到第一帧、然后开始,否则可能会出现像人体免疫黑屏的情况(固始的地震体验屋也是这样,不要直接移除视频,先暂停,在跳帧)
  • 总结:声明变量时候,都为空,对变量操作时候,要判断空的时候才能操作
  • 总结:移除的时候,要让其为空

2、代码:播放外部视频

import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;fscommand("fullscreen","true");stop();InitVars();
LoadMovie();var theVideo:Video;//视频对象
var theNet:NetConnection;//连接对象
var theNets:NetStream;//数据流对象function InitVars():void
{theVideo = new Video(1920,1080);theVideo.x = theVideo.y = 0;addChild(theVideo);theNet = new NetConnection();theNet.connect(null);theNets = new NetStream(theNet);theNets.client = this;theVideo.attachNetStream(theNets);
}//加载并播放视频,并且监听整个播放状态过程。
function LoadMovie():void
{theNets.play("测试.flv");theNets.addEventListener(NetStatusEvent.NET_STATUS, onStatusHandler);
}function onStatusHandler(e:NetStatusEvent):void
{var evtCode:String = e.info.code;switch (evtCode){case "NetStream.Play.Start" :trace("开始播放");break;case "NetStream.Play.Empty" :trace("缓冲区为空");break;case "NetStream.Play.Full" :trace("缓冲区已满");break;case "NetStream.Play.StreamNotFound" :trace("没有找到文件");break;case "NetStream.Play.Stop" :trace("一次播放完毕,从头开始");theNets.pause();theNets.seek(0);theNets.resume();//RemoveVedio();break;}
}//卸载视频
function RemoveVedio():void
{theNets.pause();theNets.dispose();theNet = null;theVideo.clear();removeChild(theVideo);
}

三、操作:指定元件播放外部Flv视频(非全屏)(可以作为遮罩来播放)

1、播放视频的视频框:图片格式要求

  • 图片:播放视频的地方都是透明通道的,所以是png格式的图片
  • 将这个承载播放的图片大于视频的尺寸,然后代码中移动视频video的位置,这样图片就把视频遮罩了

2、效果

3、代码:2.0版本

import flash.events.MouseEvent;
import flash.display.SimpleButton;
import flash.media.Video;
import flash.events.KeyboardEvent;stop();var netConnection:NetConnection;//NetConnection 类在客户端和服务器之间创建双向连接。客户端可以是 Flash Player 或 AIR 应用程序。服务器可以是 Web 服务器、Flash Media Server、运行 Flash Remoting 的应用程序服务器或 Adobe 状态服务。调用 NetConnection.connect() 以建立连接。使用 NetStream 通过该连接发送媒体流和数据。
var netStream:NetStream;//NetStream 类通过 NetConnection 打开了一个单向流通道。var video:Video;//分辨率//解决:在 flash.net.NetStream 上找不到属性 onMetaData
var clientobj=new Object();//视频路径
var arr_videoName:Array;//是否循环:播放待机时候需要循环播放
var bIsLoop;Init();function Init()
{netConnection= new NetConnection();//NetConnection 类在客户端和服务器之间创建双向连接。客户端可以是 Flash Player 或 AIR 应用程序。服务器可以是 Web 服务器、Flash Media Server、运行 Flash Remoting 的应用程序服务器或 Adobe 状态服务。调用 NetConnection.connect() 以建立连接。使用 NetStream 通过该连接发送媒体流和数据。netConnection.connect(null);//创建到 Flash Media Server 上某个应用程序或到 Flash Remoting 的双向连接,或为 RTMFP 对等组通信创建双向网络端点。;netStream = new NetStream(netConnection);//NetStream 类通过 NetConnection 打开了一个单向流通道。if (! netStream.hasEventListener(NetStatusEvent.NET_STATUS)){/*创建一个 Event 对象,其中包含有关 netStatus 事件的信息。netStatusHandler 方法作为 NetStatusEvent 事件 NetConnection.netStatus 的侦听器进行注册。当确定了 NetConnection.connect() 尝试的状态(成功或失败)时,netStatus 事件触发此方法。如果连接 NetConnection 对象的尝试取得成功(也就是说,如果 NetStatusEvent 对象的 info 属性由 netStatus 事件调度,并有一个表示成功的 code 属性),则代码创建 Video 和 NetStream 对象并调用 Video.attachNetStream() 和 NetStream.play() 方法。*/netStream.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);}//视频路径arr_videoName = new Array("video\\待机视频.flv","video\\0沙尘暴视频.flv","video\\1暴雨视频.flv","video\\2干旱视频.flv","video\\3高温视频.flv","video\\4台风视频.flv","video\\5雾霾视频.flv","video\\6大风视频.flv","video\\7寒潮视频.flv");video = new Video(1024,768);//分辨率video.x = 0;//调整视频播放位置video.y = 0;//解决:在 flash.net.NetStream 上找不到属性 onMetaDataclientobj=new Object();clientobj.onMetaData = function(){};//在 Flash Player 接收到正在播放的视频中嵌入的描述性信息时建立侦听器进行响应。netStream.client = clientobj;//指定对其调用回调方法以处理流或 F4V/FLV 文件数据的对象。if (! stage.hasEventListener(KeyboardEvent.KEY_UP)){stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp_vide);}//kuang.visible = false;//播放循环待机bIsLoop = true;playVideo(0);
}function Destroy()
{if (stage.hasEventListener(KeyboardEvent.KEY_UP)){stage.removeEventListener(KeyboardEvent.KEY_UP,KeyUp_vide);}RemoveVedio();
}function KeyUp_vide(e:KeyboardEvent)
{switch (e.keyCode){case 0+48 ://播放循环待机bIsLoop = true;playVideo(0);break;case 1+48 ://播放视频bIsLoop = false;playVideo(1);break;case 2+48 :bIsLoop = false;playVideo(2);break;case 3+48 :bIsLoop = false;playVideo(3);break;}
}function statusHandler(_evt:NetStatusEvent ):void
{//trace(_evt.info.code);if (_evt.info.code == "NetStream.Play.Start"){//开始播放}else if (_evt.info.code=="NetStream.Buffer.Empty"){//缓冲区空}else if (_evt.info.code=="NetStream.Buffer.Full"){//缓冲区满}else if (_evt.info.code=="NetStream.Play.StreamNotFound"){//没有找到文件}else if (_evt.info.code=="NetStream.Play.Stop"){if (bIsLoop){//待机视频循环播放netStream.seek(0);}else{//介绍视频播放完毕回到待机视频RemoveVedio();bIsLoop = true;playVideo(0);}}
}function playVideo(index:int)
{RemoveVedio();netStream.play(arr_videoName[index]);//调用 NetStream.play(),从本地磁盘、Web 服务器或 Flash Media Server 播放媒体文件。;video.attachNetStream(netStream);netStream.seek(0);kuang.addChildAt(video,0);//将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。 ;kuang.visible = true;
}//卸载视频
function RemoveVedio():void
{netStream.pause();netStream.dispose();netConnection = null;video.clear();if (kuang.contains(video)){kuang.removeChild(video);}//removeChild(video);
}

3、代码: 1.0版本

import flash.events.MouseEvent;
import flash.display.SimpleButton;
import flash.media.Video;
import flash.events.KeyboardEvent;stop();/*************************************/
/*                 视频播放                           */
/*************************************/
var netConnection:NetConnection = new NetConnection();//NetConnection 类在客户端和服务器之间创建双向连接。客户端可以是 Flash Player 或 AIR 应用程序。服务器可以是 Web 服务器、Flash Media Server、运行 Flash Remoting 的应用程序服务器或 Adobe 状态服务。调用 NetConnection.connect() 以建立连接。使用 NetStream 通过该连接发送媒体流和数据。
netConnection.connect(null);//创建到 Flash Media Server 上某个应用程序或到 Flash Remoting 的双向连接,或为 RTMFP 对等组通信创建双向网络端点。
var netStream:NetStream = new NetStream(netConnection);//NetStream 类通过 NetConnection 打开了一个单向流通道。
//var video:Video = new Video(1390-192/3,810-108/3);
//video.x = 65;
//video.y = 50;var video:Video = new Video(1024,768);//分辨率
video.x = 0;//调整视频播放位置
video.y = 0;netStream.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);//创建一个 Event 对象,其中包含有关 netStatus 事件的信息。netStatusHandler 方法作为 NetStatusEvent 事件 NetConnection.netStatus 的侦听器进行注册。 当确定了 NetConnection.connect() 尝试的状态(成功或失败)时,netStatus 事件触发此方法。 如果连接 NetConnection 对象的尝试取得成功(也就是说,如果 NetStatusEvent 对象的 info 属性由 netStatus 事件调度,并有一个表示成功的 code 属性),则代码创建 Video 和 NetStream 对象并调用 Video.attachNetStream() 和 NetStream.play() 方法。//解决:在 flash.net.NetStream 上找不到属性 onMetaData
var clientobj=new Object();
clientobj.onMetaData = function(){};// 在 Flash Player 接收到正在播放的视频中嵌入的描述性信息时建立侦听器进行响应。
netStream.client = clientobj;//指定对其调用回调方法以处理流或 F4V/FLV 文件数据的对象。//视频路径
var nameArr:Array = new Array("video\\待机视频.flv","video\\2.flv","video\\3.flv","video\\4.flv","video\\5.flv","video\\6.flv","video\\7.flv","video\\8.flv","video\\9.flv");Init();
function Init()
{if (! stage.hasEventListener(KeyboardEvent.KEY_UP)){stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);}kuang.visible = false;
}function KeyUp(e:KeyboardEvent)
{switch (e.keyCode){case 0+48 :playVideo(0);break;case 1+48 :playVideo(1);break;case 2+48 :playVideo(2);break;case 3+48 :playVideo(3);break;}
}function statusHandler(_evt:NetStatusEvent ):void
{//trace(_evt.info.code);if (_evt.info.code == "NetStream.Play.Start"){//开始播放}else if (_evt.info.code=="NetStream.Buffer.Empty"){//缓冲区空}else if (_evt.info.code=="NetStream.Buffer.Full"){//缓冲区满}else if (_evt.info.code=="NetStream.Play.StreamNotFound"){//没有找到文件}else if (_evt.info.code=="NetStream.Play.Stop"){closeVideo();}
}function playVideo(index:int)
{closeVideo();netStream.play(nameArr[index]);//调用 NetStream.play(),从本地磁盘、Web 服务器或 Flash Media Server 播放媒体文件。video.attachNetStream(netStream);netStream.seek(0);kuang.addChildAt(video,0);//将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。 kuang.visible = true;
}function closeVideo()
{if (kuang.visible == true){netStream.pause();kuang.removeChild(video);kuang.visible = false;}
}

三、操作:人体免疫中解决循环播放待机视频长时间会黑屏的情况

1、因为其他几个播放视频是播放一次,但是在人体免疫项目中出现了,循环播放待机视频时候出现了黑屏,所以总结一下

1、代码

var theVideo:Video;//视频对象
var theNetConnection:NetConnection;//连接对象
var theNetStream:NetStream;//数据流对象fscommand("fullscreen","true");stop();Init_daiJi();function Init_daiJi()
{//视频播放InitVars();LoadMovie();
}//移除添加的东西
function RemoveSome_daiJi()
{//移除待机视频if (theNetStream.hasEventListener(NetStatusEvent.NET_STATUS)){theNetStream.pause();theNetStream.removeEventListener(NetStatusEvent.NET_STATUS, onStatusHandler);}RemoveVedio();
}//视频===================================================
function InitVars():void
{theVideo = new Video(1920,1080);//播放视频的大小theVideo.x = theVideo.y = 0;//播放视频的位置addChild(theVideo);//添加到舞台上面theNetConnection = new NetConnection();theNetConnection.connect(null);theNetStream = new NetStream(theNetConnection);theNetStream.client = this;theVideo.attachNetStream(theNetStream);
}//加载并播放视频,并且监听整个播放状态过程。
function LoadMovie():void
{theNetStream.play("待机视频.flv");if (! theNetStream.hasEventListener(NetStatusEvent.NET_STATUS)){theNetStream.addEventListener(NetStatusEvent.NET_STATUS, onStatusHandler);}
}function onStatusHandler(e:NetStatusEvent):void
{var evtCode:String = e.info.code;switch (evtCode){case "NetStream.Play.Start" :trace("开始播放");break;case "NetStream.Play.Empty" :trace("缓冲区为空");break;case "NetStream.Play.Full" :trace("缓冲区已满");break;case "NetStream.Play.StreamNotFound" :trace("没有找到文件");break;case "NetStream.Play.Stop" :trace("一次播放完毕,从头开始");theNetStream.seek(0);break;}
}//卸载视频
function RemoveVedio():void
{theNetStream.pause();theNetStream.dispose();theNetConnection = null;theVideo.clear();removeChild(theVideo);
}

四、注意:

1、这个方法flv和mp4都可以播放,制作猜猜它是谁的时候发现,mp4狸窝转换为flv时候,前面几秒不见了。所以最好不进行转换

2、如果循环不断的播放某个视频时候,长时间播放容易造成黑屏(人体免疫项目循环播放待机视频时候遇到了),需要remove视频时候全部remove,再加载视频;

Flash全屏播放外部多个Flv视频并且按键进行切换+全屏播放外部Flv视频+指定元件播放外部Flv视频(非全屏)(可以作为遮罩来播放)相关推荐

  1. 实现PPT演示的"非全屏播放"效果

    转载者: 动态ppt模板下载 免费              来源: www.2ppt.cn 在实际使用PowerPoint的演示文稿过程中,往往需要与其它程序窗口的数据配合使用以增强演示的效果,但是 ...

  2. 微信内置浏览器 非全屏播放视频解析

    前提条件,接了一个项目要实现在微信公众号里课程播放,而且还有评论功能,视频需要小窗播放. 首先公布解决方案: 感谢知乎上的回答,原版微信内置浏览器 如何小窗不全屏播放视频? 感谢该问题的徐霖同学的回答 ...

  3. Unity真机非全屏播放视频

    转载注明出处:点击打开链接 刚开始工作就遇到了一个麻烦的问题,在Android及ios设备上实现视频的非全屏播放. 在Unity的原生技术中,可以使用MovieTexture实现PC上的该功能,但是在 ...

  4. []转载]微信内置浏览器 非全屏播放视频解析

    前提条件,接了一个项目要实现在微信公众号里课程播放,而且还有评论功能,视频需要小窗播放.首先公布解决方案: 感谢知乎上的回答,原版[微信内置浏览器 如何小窗不全屏播放视频?]感谢该问题的徐霖同学的回答 ...

  5. 微信内置浏览器 非全屏播放视频解析 1

    前提条件,接了一个项目要实现在微信公众号里课程播放,而且还有评论功能,视频需要小窗播放. 首先公布解决方案: 感谢知乎上的回答,原版[ 微信内置浏览器 如何小窗不全屏播放视频?] 感谢该问题的徐霖同学 ...

  6. 随笔:说说第一次在android中嵌入非全屏显示的unity游戏时的坑之——界面切换时出现延迟/卡顿/花屏等现象解决方法

    One 最近对接了个unity3D做的小游戏到android项目中:游戏嵌入项目的界面且非全屏显示,项目几经波折,到我手上的时候,已经采用了在同一个activity中用两个View来分别显示andro ...

  7. edge浏览器 非全屏看视频变灰

    在线观看非全屏视频的时候,点击播放头两秒是正常的,紧接着就蒙上一层灰一样.然后点击其他标签页又切回来,又一个循环. 解决办法 edge地址框输入edge://flags接着搜索Choose ANGLE ...

  8. 非全屏Activity实现,以及触摸消息的处理

    非全屏Activity实现,以及触摸消息的处理 本次主要针对,非全屏的Activity做些了解: 作为初学者,之前接触到的activity大部分情况,都是全屏显示: 想要实现局部窗口的时候,都是采用悬 ...

  9. (转)非全屏Activity实现,以及触摸消息的处理

    做一个数据库APP,添加数据总是需要切换Activity,觉得太不流畅了,对theme不熟悉,就度娘了一下,先借鉴下这篇博文,效果还不错,准备等做完项目再好好研究一下相关的属性,现在先拿来主义.做出来 ...

最新文章

  1. tomcat异常处理经验汇总
  2. 第二次启用httpd24调用mysql时出现的错误
  3. 前端开发中的一些js小技巧
  4. 软件工程---07.设计与实现
  5. db2 sql 判断select是否为空_学会复杂一点的SQL语句:Oracle DDL和DML
  6. mac os 编译android,Mac OS X 编译Android内核源代码
  7. python图片矢量化_图像处理tas的Python矢量化
  8. 【论文笔记】EMNLP2019: 基于层次多图卷积网络的实体类型分类
  9. 万用表测线路断点位置_万用表测电流口诀,正确使用方法
  10. 动手学习深度学习——基本简介
  11. 流程图基本图形的含义
  12. Misra-Gries 算法
  13. 网易云音乐歌词python
  14. 华为鲲鹏泰山服务器系统安装,鲲鹏处理器正式商用:浙江移动营业厅用上华为泰山服务器...
  15. 《阴阳师·3黑川主》原作:梦枕貘
  16. 百位LOL英雄联盟角色合集
  17. [Maven实战-许晓斌]-[第三章] Mave使用入门二(在IDE中的使用) [第四章] 案例的背景介绍...
  18. linux firefox 插件开发教程,Firefox插件(plugins)开发实用指南
  19. android 360度全景,android 360度全景展示
  20. 中国这10家慕课网站,您需要知道

热门文章

  1. java -jar和hadoop jar的区别
  2. 【转】日立HDS存储Storage Navigator Modular 2(SNM2)管理软件下载(包含安装配置说明)...
  3. 揭开 import-html-entry 面纱
  4. Macfee与ESET哪个好?
  5. fatal: unable to access: OpenSSL SSL_read: Connection was rese, errno 10054
  6. 看完就能掌握的PHP核心技术 - ​​​​​​​​面向对象
  7. 善于总结才能成长更快,我的2019总结
  8. 《Linux命令行与shell脚本编程大全》第二十章 正则表达式
  9. java两条直线交点_求两条直线的交点坐标
  10. 开发实战:智能高精度工业仪表