一个视频要循环播放,通常的办法都是播放完后再重新播放,但是不可避免的播放结束和重新开始播放这个时间点上会有停顿,如何解决这个问题,说个偏方吧!

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 让一个视频无缝循环播放的一个偏方的更多相关文章

  1. [ActionScript 3.0] AS3.0和AS2.0的相互通信

    AS3和AS2之间的通信,最好的方式可能就是LocalConnection了. AS2向AS3发送数据,即AS2调用AS3的函数: as2.0代码(按钮上写的发送信息代码): on (release) ...

  2. [ActionScript 3.0] AS3.0 下雨及涟漪效果

    帧代码: stage.frameRate = 80; function init(x1:Number,y1:Number) { var mc:MovieClip=new MovieClip(); ad ...

  3. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

  4. [ActionScript 3.0] AS3.0 本机鼠标指针

    Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标 ...

  5. [ActionScript 3.0] AS3.0 涂鸦及擦除功能,撤销重做步骤记录实例

    package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMo ...

  6. [ActionScript 3.0] AS3.0 简单封装Socket的通信

    Socket服务器 package com.controls.socket { import com.models.events.AppEvent; import com.models.events. ...

  7. [ActionScript 3.0] AS3.0 Socket通信实例

    以下类是充当Socket服务器的例子 package { import flash.display.Sprite; import flash.events.Event; import flash.ev ...

  8. [ActionScript 3.0] AS3.0 对象在矩形范围随机运动

    package com.views { import flash.display.Bitmap; import flash.display.MovieClip; import flash.displa ...

  9. [ActionScript 3.0] AS3.0 将图像的Alpha通道转换为黑白图像(分离ARGB方式)

    import flash.display.BitmapData; import flash.display.Bitmap; /** * 将图像的Alpha通道转换为黑白图像(分离ARGB方式) */ ...

随机推荐

  1. 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 ...

  2. IOS中的动画菜单

    SvpplyTable(可折叠可张开的菜单动画) 允许你简单地创建可折叠可张开的菜单动画效果,灵感来自于Svpply app.不同表格项目使用JSON定义,你可以定义每个菜单项和任何子菜单,为每个项目 ...

  3. Shannon entropy

    Shannon entropy is one of the most important metrics in information theory. Entropy measures the unc ...

  4. sprintf函数

    sprintf函数用法举例 #include<stdio.h> int main() { //1.连接字符串 char a1[] = {'A', 'B', 'C', 'D', 'E', ' ...

  5. css布局之一列布局

    在我们浏览网页中经常看见一列布局其实一列布局就是 一般的一列布局的都是固定宽度的 body{margin:0;padding:0} .main{width:800px;height:300px;bac ...

  6. sql中replace函数与like结合达到提换的效果

    create table ts ( idd varchar() , co1 varchar() , co2 varchar() , co3 varchar() , gai varchar() ); i ...

  7. 安装java和jmeter

    win7 64位 安装java 1.下载java开发工具包JDK,在硬盘创建java文件夹,在里面创建jdk1.8.0_101和jre1.8.0_101 2.安装jdk,第一个路径装在jdk1.8.0 ...

  8. rails之 Migrations (转)

    1.简介 在rails中用migration可以很方便的管理数据库的结构.可以创建数据库,创建表,删除表,添加字段,删除字段,整理数据. migration就是一系列的class,这些类都继承了Act ...

  9. 2014年4月底至5月初51Aspx源码发布详情

    精灵豆会员管理系统源码  2014-4-21 [VS2010]功能介绍:精灵豆会员管理系统业务管理平台采用微软选进的C#语言开发,采用大型数据库,具有比较高的执行效率和高安全性.系统分为消费管理,会员 ...

  10. iOS 中捕获程序崩溃日志

    iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59) 转载▼     iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下 ...