Video chat with flash media server webcam enable disable

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