Hi All
i am developing video chat and textchat features : user any time can enable or disable webcam and mic if user disable webcam that time default image should display this is my code
<fx:Script>
<![CDATA[
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import mx.collections.ArrayCollection;
import mx.controls.*;
import mx.controls.Image;
import mx.core.UIComponent;
import mx.flash.UIMovieClip;
import spark.components.Panel;
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
SharedObject.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
private var echoResponder:Responder = new Responder(echoResult, echoStatus);
private var nc:NetConnection;
private var ns:NetStream;
public var ro:SharedObject;
public var mycam:Camera;
public var mymic:Microphone;
public var unamestr:String;
[Embed(source="chatuser.jpg")]
public var userIconClass:Class;
private function init():void{
writeln("Initializing application... in player: " + flash.system.Capabilities.version + "
");
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);
}
private function connect():void{
if(userName.text=="") {
Alert.show("Please Enter User Name");
return; }
switch (connectButton.label){
case "Connect":
connectButton.label = "Wait";
connectButton.enabled = false;
unamestr=userName.text;
mycam= Camera.getCamera();
mymic=Microphone.getMicrophone();
if (!mycam) {
unamestr=unamestr +" nocam ";
}
if (!mymic) {
unamestr=unamestr +" nomic ";
}
nc.connect("rtmp://192.168.0.194/chat_test", unamestr);
nc.client = this;
break;
case "Disconnect":
this.usersList.dataProvider=[];
removeother(othervideolist.numChildren,othervideolist);
messageArea.text="";
connectButton.label = "Connect";
connectButton.enabled = true;
nc.close();
}
}
private function netSecurityError(event:SecurityErrorEvent):void {
writeln("netSecurityError: " + event);
}
private function netStatus(event:NetStatusEvent):void {
var info:Object = event.info;
switch (info.code)
{
case "NetConnection.Connect.Success" :
connectButton.label = "Disconnect";
connectButton.enabled = true;
sendButton.enabled = true;
callmiccam();
ro = SharedObject.getRemote("ChatUsers", nc.uri);
if(ro){
ro.addEventListener(SyncEvent.SYNC, OnSync);
ro.connect(nc);
ro.client = this;
}
break;
case "NetConnection.Connect.Closed" :
connectButton.label = "Connect";
connectButton.enabled = true;
sendButton.enabled = false;
break;
case "NetConnection.Connect.Failed" :
break;
case "NetConnection.Connect.Rejected" :
break;
default :
break;
}
}
private function callmiccam():void {
if (mycam) {
ns=new NetStream(nc);
ns.client = this;
ns.attachCamera(mycam);
ns.attachAudio(mymic);
var vid:Video=new Video();
vid.width= 300;
vid.height = 200;
vid.attachNetStream(ns);
VideoDisplay.attachCamera(mycam);
//ns.publish(userName.text,"live");
}
}
private function OnSync(event:SyncEvent):void {
var info:Object;
var currentIndex:Number;
var currentNode:Object;
var changeList:Array = event.changeList;
var temp:Array = new Array();
var tempdisplay:Array= new Array();
var str:String;
writeln("---- Shared Object Data -----");
for(var p:String in ro.data){
str=ro.data[p];
temp.push(str);
str= str.split(" nocam ").join("");
str=str.split(" nomic ").join("");
tempdisplay.push(str)
}
this.usersList.dataProvider = tempdisplay; //update list of users
removeother(clients.numChildren,clients);
viewother(temp);
for (var i:Number=0; i < changeList.length; i++)
{
info = changeList*;
for (var k:String in info){
writeln("OnSync> changeList[" + i + "]." + k + ": " + info[k]);
}
}
}
private function removeother(n:int,m:*):void{
if(n != 0){
for(var id:int = n-1;id >= 0;id--){
m.removeChild(m.getChildAt(id));
}
}
}
private function viewother(arr:Array):void{
var usrname:String;
for (var i:int=0;i<arr.length;i++){
usrname=arr*;
if(usrname!=unamestr)
{
if (int(usrname.indexOf("nocam"))>0)
{
var panel:Panel = new Panel();
panel.width=110;
panel.height=100;
usrname=usrname.split(" nocam ").join("");
usrname=usrname.split(" nomic ").join("");
panel.title = usrname;
var img:Image = new Image();
img.source = new userIconClass();
panel.addElement(img);
clients.addChild( panel );
}
else
{
var panel2:Panel = new Panel();
panel2.name=usrname;
panel2.title = usrname;
panel2.width=110;
panel2.height=120;
var playns:NetStream = new NetStream(nc);
var newvid:Video = new Video();
newvid.name=usrname+"_video";
newvid.width = 105;
newvid.height = 81;
newvid.attachNetStream(playns);
playns.play(arr*);
var uiComp:UIComponent = new UIComponent();
uiComp.addChild( newvid );
panel2.addElement(uiComp);
clients.addElement(panel2);
}
}
}
}
private function echoResult(msg:String):void{
writeln("echoResult: " + msg + "
");
}
private function echoStatus(event:Event):void{
writeln("echoStatus: " + event);
}
private function sendMessage():void{
var usermess:String="<font color='#ff0000'>"+sendMessageInput.text+"</font>";
nc.call("msgFromClient", null, usermess);
sendMessageInput.text = "";
}
private function getServerTime():void{
nc.call("getServerTime", echoResponder, sendMessageInput.text);
}
public function showMessage(msg:String):void{
writeln("showMessage: " + msg + "
");
}
public function setUserID(msg:Number):void{
writeln("showUser: " + msg + "
");
}
public function setHistory(msg:String):void{
writeln("showHistory: " + msg + "
");
}
public function msgFromSrvr(msg:String):void{
writeMessage(msg);
}
public function writeln(msg:String):void{ }
public function writeMessage(msg:String):void{
messageArea.htmlText+=msg+"
";
messageArea.validateNow();
messageArea.verticalScrollPosition = messageArea.maxVerticalScrollPosition;
}
public function showcam():void{
switch (webcambtt.label){
case "Webcam Enable":
ns.publish(userName.text,"Live");
webcambtt.label="Webcam Disable";
break;
case "Webcam Disable":
ns.attachCamera(null);
ns.attachAudio(null);
ns.close();
ns=null;
webcambtt.label="Webcam Enable";
break;
}
}
private function findchild():void{ }
]]>
</fx:Script>
<mx:List width="127" height="157" x="261" y="60" id="usersList"/>
<mx:TextArea width="495" height="210" id="messageArea" editable="false" wordWrap="true" x="10" y="247"/>
<mx:TextInput text="hello" id="sendMessageInput" width="366" x="77" y="465" enter="sendMessage()" />
<mx:Button label="Send" id="sendButton" enabled="false" click="sendMessage()" x="451" y="465"/>
<!--<mx:TextInput id="serverTime" width="243" x="397" y="10"/>-->
<mx:Button label="Connect" id="connectButton" click="connect();" x="463" y="10" width="90"/>
<mx:TextInput x="261" y="10" width="194" id="userName"/>
<!--<mx:TextArea width="511" height="83" id="traceArea" wordWrap="true" x="10" y="531"/>
<mx:Label x="10" y="505" text="Trace Window" fontWeight="bold"/>-->
<mx:Label x="10" y="221" text="Message Window" fontWeight="bold"/>
<mx:Label x="261" y="34" text="Users" fontWeight="bold"/>
<!--<mx:Label x="319" y="12" text="Local Time:"/>-->
<mx:Label x="10" y="467" text="Message:"/>
<mx:VideoDisplay x="6" y="44" width="227" height="172" id="VideoDisplay"/>
<mx:UIComponent x="828" y="41" width="102" height="555" id="othervideolist"></mx:UIComponent>
<mx:Tile id="clients" width="110" height="440" direction="horizontal" x="531" y="73" > </mx:Tile>
<s:TextInput x="10" y="10" width="189" text="project" id="roomname"/>
<s:Button x="571" y="10" label="Webcam Enable" width="121" id="webcambtt" click="showcam()"/>
<s:Button x="700" y="10" label="Mic Enable" width="101" id="Micbtt" click="findchild()"/>
</s:Application>
all are working fine but one mistake
when I stop the disable web cam I am not able to clear my video component as I see freezed image of my video in it.
pls help i am new in flex thanks