as3 netconnection 例子

本文介绍如何使用ActionScript 3.0中的NetConnection类来建立与服务器的连接,并通过NetStream类播放FLV视频文件。文章提供了完整示例代码,展示了如何处理连接成功后的视频播放流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包 flash.net
类 public class NetConnection
继承 NetConnection   EventDispatcher   Object

语言版本 :   ActionScript 3.0
Player 版本 :   Flash Player 9


使用 NetConnection 类可以调用远程应用程序服务器(Adobe 的 Flash Media Server 2 或 Adobe Flex)上的命令,并可从 HTTP 地址或本地驱动器播放 Flash 视频 (FLV) 文件流。 通常,将 NetConnection 对象和 NetStream 对象一起使用。
使用此类时,请考虑 Flash Player 安全模型:

如果执行调用的 SWF 文件在网络沙箱中并且要加载的声音文件是本地的,则不允许加载和播放音频或视频文件。
默认情况下,若执行调用的 SWF 是本地的并且试图加载和播放远程文件,则不允许加载和播放音频或视频文件。 用户必须授予明确许可以允许该操作。


方法
     NetConnection()

创建一个 NetConnection 对象,可与 NetStream 对象一起用于调用远程应用程序服务器上的命令,或者在本地或从服务器播放视频流 (FLV) 文件。

     addHeader(operation:String, mustUnderstand:Boolean = false, param:Object = null):void 将上下文标头添加到 AMF 数据包结构。

     call(command:String, responder:Responder, ... arguments):void
在运行 Flash Media Server 的服务器上或应用程序实例所连接的应用程序服务器上调用命令或方法。

     close():void
关闭本地打开的连接或与服务器的连接,并调度 code 属性值为 NetConnection.Connect.Closed 的 netStatus 事件。

     connect(command:String, ... arguments):void
打开到服务器的连接。  

事件 摘要 定义方

     asyncError   在异步引发异常(即来自本机异步代码)时调度。

     ioError   在出现输入或输出错误并导致网络操作失败时调度。

     netStatus   在 NetConnection 对象报告其状态或错误条件时调度。

     securityError   若对 NetConnection.call() 的调用尝试连接到调用方安全沙箱外部的服务器,则进行调度。

实例:

以下示例将 Video 对象与 NetConnection 和 NetStream 类一同使用,以加载和播放 FLV 文件。 若要运行此示例,需要一个 FLV 文件,其名称和位置与传递给 videoURL 的变量匹配,在本例中,名为 Video.flv 的 FLV 文件与 SWF 文件在同一个目录中。

在本例中,创建 Video 和 NetStream 对象并调用 Video.attachNetStream() 和 NetStream.play() 方法的代码放在处理函数中。 仅当连接到 NetConnection 对象的尝试取得成功时才调用处理函数,即,当 netStatus 事件返回 info 对象(带有一个表示成功的 code 属性)时,才调用该处理函数。 建议您在调用 NetStream.play() 之前,等待连接成功。


package {
     import flash.display.Sprite;
     import flash.events.NetStatusEvent;
     import flash.events.SecurityErrorEvent;
     import flash.media.Video;
     import flash.net.NetConnection;
     import flash.net.NetStream;
     import flash.events.Event;

     public class NetConnectionExample extends Sprite {
         private var videoURL:String = "Video.flv";
         private var connection:NetConnection;
         private var stream:NetStream;

         public function NetConnectionExample() {
             connection = new NetConnection();
             connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
             connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
             connection.connect(null);
         }

         private function netStatusHandler(event:NetStatusEvent):void {
             switch (event.info.code) {
                 case "NetConnection.Connect.Success":
                     connectStream();
                     break;
                 case "NetStream.Play.StreamNotFound":
                     trace("Stream not found: " + videoURL);
                     break;
             }
         }

         private function securityErrorHandler(event:SecurityErrorEvent):void {
             trace("securityErrorHandler: " + event);
         }

         private function connectStream():void {
             var stream:NetStream = new NetStream(connection);
             stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
             stream.client = new CustomClient();
             var video:Video = new Video();
             video.attachNetStream(stream);
             stream.play(videoURL);
             addChild(video);
         }
     }
}

class CustomClient {
     public function onMetaData(info:Object):void {
         trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
     }
     public function onCuePoint(info:Object):void {
         trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
     }
}

转自:http://apps.hi.baidu.com/share/detail/30019364

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值