flash as3连接fms
在前面提到过使用as3连接remoting的的方法,在旧的amfphp版本使用的编码是as2和as1时代的通讯编码,因此as3使用的时候要为NecConnection指定objectEncoding 为ObjectEncoding.AMF0,amfphp1.9beta版本开始支持ObjectEncoding.AMF3即as3 NecConnection默认的编码,目前的fms还不支持ObjectEncoding.AMF3编码,所以在使用的时候还是要指定NecConnection的objectEncoding为ObjectEncoding.AMF0 ,如果不指定,会提示objectEncoding error的错误
下面是一个播放在使用as3和fms播放mp3的例子:
//by roading http://roading.net/blog
//导入net包
import flash.net.*;
//指定播放的mp3名字
var id = "mp3:love";
var in_ns:NetStream;
var nc = new NetConnection();
//指定编码
nc.objectEncoding = ObjectEncoding.AMF0;
//连接fms的playmp3应用程序
nc.connect("rtmp:/playmp3");
//侦听状态
nc.addEventListener("netStatus",netStatusHandler);
function netStatusHandler(e)
{
trace("netstate...............")
//for(var i in e.info)
//trace(i+"==="+e.info[i])
//连接成功
if(e.info.code=="NetConnection.Connect.Success")
{
//获取mp3时间
nc.call("GetMp3Length", new Responder(lengLoaded), id);
in_ns = new NetStream(nc);
//播放
in_ns.play(id);
//设置缓冲的音乐长度
in_ns.bufferTime = 5;
//侦听ns的状态
in_ns.addEventListener("netStatus",in_nsnetStatusHandler);
}
}
//得到mp3的时间
function lengLoaded(length) {
trace("mp3length==="+length);
}
//
function in_nsnetStatusHandler(e)
{
trace(e.info.code);
}