[ActionScript 3.0] AS3.0 让一个视频无缝循环播放的一个偏方
一个视频要循环播放,通常的办法都是播放完后再重新播放,但是不可避免的播放结束和重新开始播放这个时间点上会有停顿,如何解决这个问题,说个偏方吧!
package com.views
{
import flash.display.Sprite;
import flash.events.Event;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.utils.setTimeout; /**
* @author Frost.Yen
* @email 871979853@qq.com
* @build 2016-8-9 上午10:53:13
*/
public class VideoView extends Sprite
{
private var _video1:VideoDisplay;
private var _video2:VideoDisplay;
private var _currVideo:VideoDisplay;
private var _duration:Number;
private var _b:Boolean;
public function VideoView(url:String)
{
_video1 = new VideoDisplay(url,true);
_video2 = new VideoDisplay(url);
_video1.onMetaData = onMetaData;
_video2.visible = false;
_currVideo = _video1;
this.addChild(_video1);
this.addChild(_video2);
this.addEventListener(Event.ENTER_FRAME,onCheck);
}
private function onMetaData():void
{
_duration = _video1.duration;
}
private function onCheck(e:Event):void
{
//trace("vs.time= " + _currVideo.time+ " duration= " + _duration );
if (_currVideo.time > 0 && _duration > 0)
{ if (_duration-_currVideo.time <=0.1 )
{ this.removeEventListener(Event.ENTER_FRAME,onCheck);
setTimeout(add,2000);
if(_video1.visible){
_video1.visible = false;
_video2.visible = true;
_video1.seek(0);
_video1.pause();
_video2.play();
_currVideo = _video2;
}else{
_video2.visible = false;
_video1.visible = true;
_video2.seek(0);
_video2.pause();
_video1.play();
_currVideo = _video1;
} //_ns.seek(0);//跳转到0秒处播放。
}
}
}
private function add():void
{
this.addEventListener(Event.ENTER_FRAME,onCheck);
}
}
}
import flash.display.Sprite;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream; class VideoDisplay extends Sprite
{
private var _video:Video;
private var _ns:NetStream;
private var _duration:Number;
public var onMetaData:Function;
public function VideoDisplay(url:String,auto:Boolean=false)
{
var nc:NetConnection = new NetConnection();
nc.connect(null);
_ns = new NetStream(nc);
var client:Object = new Object( );
client.onMetaData = function(data:Object):void {
//trace(data.duration);
_duration = data.duration;
if(onMetaData!=null){
onMetaData();
} };
_ns.client = client;
_video = new Video(1920,1080);
_video.attachNetStream(_ns);
_ns.play(url);
if(!auto){
_ns.seek(0);
_ns.pause();
}
this.addChild(_video);
}
public function play():void
{
_ns.resume();
}
public function pause():void
{
_ns.pause();
}
public function seek(offset:Number):void
{
_ns.seek(offset);
}
public function get duration():Number
{
return _duration;
}
public function get time():Number
{
return _ns.time;
}
}
[ActionScript 3.0] AS3.0 让一个视频无缝循环播放的一个偏方的更多相关文章
- [ActionScript 3.0] AS3.0和AS2.0的相互通信
AS3和AS2之间的通信,最好的方式可能就是LocalConnection了. AS2向AS3发送数据,即AS2调用AS3的函数: as2.0代码(按钮上写的发送信息代码): on (release) ...
- [ActionScript 3.0] AS3.0 下雨及涟漪效果
帧代码: stage.frameRate = 80; function init(x1:Number,y1:Number) { var mc:MovieClip=new MovieClip(); ad ...
- [ActionScript 3.0] AS3.0 动态加载显示内容
可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...
- [ActionScript 3.0] AS3.0 本机鼠标指针
Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标 ...
- [ActionScript 3.0] AS3.0 涂鸦及擦除功能,撤销重做步骤记录实例
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMo ...
- [ActionScript 3.0] AS3.0 简单封装Socket的通信
Socket服务器 package com.controls.socket { import com.models.events.AppEvent; import com.models.events. ...
- [ActionScript 3.0] AS3.0 Socket通信实例
以下类是充当Socket服务器的例子 package { import flash.display.Sprite; import flash.events.Event; import flash.ev ...
- [ActionScript 3.0] AS3.0 对象在矩形范围随机运动
package com.views { import flash.display.Bitmap; import flash.display.MovieClip; import flash.displa ...
- [ActionScript 3.0] AS3.0 将图像的Alpha通道转换为黑白图像(分离ARGB方式)
import flash.display.BitmapData; import flash.display.Bitmap; /** * 将图像的Alpha通道转换为黑白图像(分离ARGB方式) */ ...
随机推荐
- get a new level 25 battle pet in about an hour
If you have 2 level 25 pets and any level 1 pet, obviously start with him in your lineup. Defeat all ...
- IOS中的动画菜单
SvpplyTable(可折叠可张开的菜单动画) 允许你简单地创建可折叠可张开的菜单动画效果,灵感来自于Svpply app.不同表格项目使用JSON定义,你可以定义每个菜单项和任何子菜单,为每个项目 ...
- Shannon entropy
Shannon entropy is one of the most important metrics in information theory. Entropy measures the unc ...
- sprintf函数
sprintf函数用法举例 #include<stdio.h> int main() { //1.连接字符串 char a1[] = {'A', 'B', 'C', 'D', 'E', ' ...
- css布局之一列布局
在我们浏览网页中经常看见一列布局其实一列布局就是 一般的一列布局的都是固定宽度的 body{margin:0;padding:0} .main{width:800px;height:300px;bac ...
- sql中replace函数与like结合达到提换的效果
create table ts ( idd varchar() , co1 varchar() , co2 varchar() , co3 varchar() , gai varchar() ); i ...
- 安装java和jmeter
win7 64位 安装java 1.下载java开发工具包JDK,在硬盘创建java文件夹,在里面创建jdk1.8.0_101和jre1.8.0_101 2.安装jdk,第一个路径装在jdk1.8.0 ...
- rails之 Migrations (转)
1.简介 在rails中用migration可以很方便的管理数据库的结构.可以创建数据库,创建表,删除表,添加字段,删除字段,整理数据. migration就是一系列的class,这些类都继承了Act ...
- 2014年4月底至5月初51Aspx源码发布详情
精灵豆会员管理系统源码 2014-4-21 [VS2010]功能介绍:精灵豆会员管理系统业务管理平台采用微软选进的C#语言开发,采用大型数据库,具有比较高的执行效率和高安全性.系统分为消费管理,会员 ...
- iOS 中捕获程序崩溃日志
iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59) 转载▼ iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下 ...