flex+fms 视频聊天 触发不了SyncEvent.SYNC
糖牙 2009-10-22 11:29:06 import vo.Message;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import flash.net.URLRequest;
private var mycon:NetConnection;
private var serverApp:String="rtmp://localhost/FlexChart";
private var talk_so:SharedObject;
private var response:Responder;
private var arr:ArrayCollection=new ArrayCollection();
private var camera:Camera;
private var microphone:Microphone;
private var netStream:NetStream;
private function init():void
{
flash.system.Security.allowDomain("*");
btnSend.addEventListener(MouseEvent.CLICK,sendHandler);
mycon=new NetConnection();
mycon.addEventListener(NetStatusEvent.NET_STATUS,netStutasHandler);
mycon.connect(serverApp);
mycon.client=this;
initMedia();
btnrecord.addEventListener(MouseEvent.CLICK,recordFLV);
btnstop.addEventListener(MouseEvent.CLICK,stopRecord);
btnreplay.addEventListener(MouseEvent.CLICK,replayFLV);
}
public function onBWDone():void{};
private function netStutasHandler(evt:NetStatusEvent):void
{
trace(evt.info.code);
if(evt.info.code=="NetConnection.Connect.Success")
{
Alert.show("连接成功");
talk_so=SharedObject.getRemote("talk",mycon.uri,true);
talk_so.addEventListener(SyncEvent.SYNC,syncHandler);事件触发不了
talk_so.addEventListener(AsyncErrorEvent.ASYNC_ERROR,errorHandler);
talk_so.connect(mycon);
}
else
{
Alert.show("连接失败"+evt.info.code);
}
}
private function errorHandler(ev:AsyncErrorEvent):void
{
trace(ev.error);
Alert.show(ev.error.message);
}
private function syncHandler(evt:SyncEvent):void
{
txtcontent.text=" ";
Alert.show(talk_so.data.msgList);
if(talk_so.data.msgList!=null)
{
var tmp:ArrayCollection=new ArrayCollection();
covertArrayCollection(tmp,talk_so.data.msgList as ArrayCollection);
Alert("length:"+tmp.length);
for(var j:int=0;j<tmp.length;j++)
{
var message:Object=tmp.getItemAt(j);
var fullMessage:String=message.nickname+"在"+message.time+"说:"+message.msg;
txtcontent.text=txtcontent.text+fullMessage+"\n";
}
}
} private function initMedia():void
{
camera = Camera.getCamera();
if(camera){
camera.setMode(160,120,15,false);//视频大小及帧速
camera.setQuality(0,90); //质量,100最大不过耗带宽较多
vd_myVideo.attachCamera(camera);
}
else
{
Alert.show("没有找到摄像头");
}
microphone=Microphone.getMicrophone();
}
private function sendHandler(e:MouseEvent):void
{
var arr:ArrayCollection=new ArrayCollection();
if(talk_so.data.msgList==null)
{
arr=new ArrayCollection();
}
else
{
covertArrayCollection(arr,talk_so.data.msgList as ArrayCollection);
}
var obj:Message=new Message();
obj.nickname=txtname.text;
obj.msg=txtspeak.text;
obj.time=new Date();
arr.addItem(obj);
talk_so.setProperty("msgList",arr);
//talk_so.send("msgList",arr);
txtspeak.text="";
}
private function covertArrayCollection(arrNew:ArrayCollection,arrOld:ArrayCollection):void
{
arrNew.removeAll();
for(var i:int=0;i<arrOld.length;i++)
{
arrNew.addItemAt(arrOld.getItemAt(i),i);
}
}