亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? flex2fms.mxml

?? flex 和fms通信,實現實時多人視頻聊天實例
?? MXML
字號:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()">
	<mx:HBox id="videoHBox">
	</mx:HBox>

	<mx:TextArea width="622" height="188" id="traceArea" wordWrap="true"/>
	
	<mx:Form width="622">
		<mx:FormItem label="Call Test Echo Message:" width="560">
			<mx:TextInput text="called!" id="echoMessageInput"  width="350"/>
			<mx:Button label="Call Echo Message" id="callButton" enabled="false" click="echoMessage();"/>
		</mx:FormItem>
		<mx:FormItem label="Stream Send Test Echo Message:" width="560">
			<mx:TextInput text="sent!" id="sendMessageInput"  width="350"/>
			<mx:Button label="Send Message" id="sendButton" enabled="false" click="sendMessage();"/>
		</mx:FormItem>
		<mx:FormItem label="So property value:" width="560">
			<mx:TextInput text="foo" id="soInput"  width="350"/>
			<mx:Button label="Set" id="soSetButton" enabled="false" click="setSO();"/>
		</mx:FormItem>
		<mx:FormItem   horizontalAlign="right" width="560">
			<mx:Button label="Connect" id="connectButton" click="connect();"  width="100"/>
		</mx:FormItem>
	</mx:Form>
	
	
<mx:Script>
	<![CDATA[
		import mx.controls.Spacer;
		import flash.net.*;
		import flash.events.*;
		import flash.utils.*;
		import flash.media.Camera;
		import mx.controls.*;
		import mx.core.UIComponent;

		// Current release of FMS only understands AMF0 so tell Flex to 
		// use AMF0 for all NetConnection, NetStream, and SharedObject objects.
		NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
		//NetStream.defaultObjectEncoding     = flash.net.ObjectEncoding.AMF0;
		SharedObject.defaultObjectEncoding  = flash.net.ObjectEncoding.AMF0;
		
		// NetConnection to be used throughout this script:
		private var nc:NetConnection;
		// echoResponder is used when nc.call("echo", echoResponder ...) is called.
		private var echoResponder:Responder = new Responder(echoResult, echoStatus);
		// Video objects
		private var returnedVideo:Video;
		private var localVideo:Video;
		// Stream Objects:
		private var inStream:NetStream = null;
		private var outStream:NetStream = null;
		// Camera:
		private var camera:Camera;
		
		private var so:SharedObject;
		
		/** 
		 * init is called by the application after it's children are created. 
		 * See the application tag.
		 */
		private function init():void{
			writeln("Initializing application... in player: " + flash.system.Capabilities.version + "\n");
			
			// Create the NetConnection and listen for NetStatusEvent and 
			nc = new NetConnection();
			nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
			nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);
			
			// Create two Video objects and add them to the application's video HBox.
			// To put them in the HBox I had to put them in a UIComponent first...
			
			var videoHolder:UIComponent = new UIComponent();
			videoHolder.setActualSize(330, 120);
						
			localVideo = new Video(160, 120);
			videoHolder.addChild(localVideo);
			localVideo.x = 0;
			localVideo.y = 0;
			
			returnedVideo = new Video(160, 120);
			videoHolder.addChild(returnedVideo);
			returnedVideo.x = 170;
			returnedVideo.y = 0;
			
			videoHBox.addChild(videoHolder);
		}
		
		private function soOnSync(event:SyncEvent):void {
			// Show the ChangeList:
			var info:Object;
			var changeList:Array = event.changeList;
			writeln("soOnSync> event: " + event.toString());
			
			for (var i:Number=0; i < changeList.length; i++) {
				info =  changeList[i];
				for (var p:String in info){
					writeln("soOnSync> changeList[" + i + "]." + p + ": " + info[p]);
				}
			}
			// Show all data in the text area
			writeln("---- Shared Object Data -----");
			for(var p:String in so.data) writeln("soOnSync> so.data." + p + ": " + so.data[p]);
			
			writeln(""); // just add some space
			
			// Show the prop value in the TextInput even though it will be there already.
			soInput.text = so.data.prop;
		}

		/** 
		 * This method could be named anything - even onStatus. I've named it
		 * netStatus as in Dave Simmons example. In the docs they use the
		 * name netStatusHandler. Instead of receiving an information object
		 * it is passed an event that contains the information object.
		 */
		private function netStatus(event:NetStatusEvent):void {
			// Write out information about connection events:
            writeln("netStatus: " + event);
            var info:Object = event.info;
            for(var p:String in info) {
                writeln(p + " : " + info[p]);
            }
            writeln("");
            
            // Change the application state if we connect or disconnect.
            switch(info.code){
            	case "NetConnection.Connect.Success":
            		// Adjust Buttons
            		connectButton.label = "Disconnect";
            		connectButton.enabled = true;
            		callButton.enabled = true;  
            		sendButton.enabled = true; 
            		soSetButton.enabled = true;
            		
            		// Close and recreate streams
            		if (inStream) inStream.close();
            		if (outStream) outStream.close(); 
            		inStream = new NetStream(nc);       
            		outStream = new NetStream(nc);
            		
            		// Capture video and publish it
            		camera = Camera.getCamera();
            		// Avoid an error if there is no camera!
            		if (camera){
            			camera.setMode(160, 120, 6, true);
            			localVideo.attachCamera(camera);
            			outStream.attachCamera(camera);
            		}	
            		outStream.publish("testVideo");
          			writeln("Publishing stream...\n");
          			
          			// Play the video-only stream and set it to receive 
          			// showMessage remote method calls. 
            		inStream.play("testVideo");
            		//inStream.showMessage = showMessage;
            		inStream.client = this;
            		//inStream["showMessage"] = showMessage;
            		returnedVideo.attachNetStream(inStream);

          			writeln("Creating local copy of a persistent Remote SharedObject...\n");			
					so = SharedObject.getRemote("mySo", nc.uri, true);
					if(so){
						so.addEventListener(SyncEvent.SYNC, soOnSync);
						so.connect(nc);
					}
            		 	
            	break;
            	case "NetConnection.Connect.Closed":
            		connectButton.label = "Connect";
            		connectButton.enabled = true;
            		callButton.enabled = false;
            		sendButton.enabled = false;
            		if (inStream) inStream.close();
            		if (outStream) outStream.close();         	
            	break;
            }
        }

		/** 
		 * Reports a security violation error after trying to connect.
		 */
		private function netSecurityError(event:SecurityErrorEvent):void {
            writeln("netSecurityError: " + event);
        }
        
        /** 
         * connect is called whenever the connectButton is pressed
         * and decides what to do based on the current label of the button.
         * NOTE: the rtmp address is in this function. Change it if you need to.
         */
        private function connect():void{
        	switch(connectButton.label){
        		case "Connect":
        			connectButton.label = "Wait";
        			connectButton.enabled = false;
        			nc.connect("rtmp:/flex2FMS");
        		break;
        		case "Disconnect":
        			connectButton.label = "Connect";
        			connectButton.enabled = true;
        			nc.close();
        		break;
        	}
        	
        }
        
        /** echoResult is called when the echoResponder gets a result from the nc.call("echoMessage"..) */
        private function echoResult(msg:String):void{
        	writeln("echoResult: " + msg + "\n");
        }
        
        /** echoResult is called when the echoResponder gets a error after a nc.call("echoMessage"..) */
        private function echoStatus(event:Event):void{
        	writeln("echoStatus: " + event);
        }
        
        /** echoMessage is called when the callButton is pressed to test nc.call */
        private function echoMessage():void{
        	nc.call("echo", echoResponder, echoMessageInput.text);
        }

		/** sendMessage is called when the sendButton is pressed to test ns.send */
		private function sendMessage():void{
			outStream.send("showMessage", sendMessageInput.text);
		}


		/** sendMessage is called when the sendButton is pressed to test ns.send */
		private function setSO():void{
			so.setProperty("prop", soInput.text);
		}
		
		/** showMessage is the function called by the inStream. See the netStatus function */
		public function showMessage(msg:String):void{
			writeln("showMessage: " + msg + "\n");
		}
				
		/** 
		 * writeln writes text into the traceArea TextArea instead of using trace. 
		 * Note to get scrolling to the bottom of the TextArea to work validateNow()
		 * must be called before scrolling.
		 */		
		public function writeln(msg:String):void{
			traceArea.text += msg + "\n";
			traceArea.validateNow();
			traceArea.verticalScrollPosition = traceArea.maxVerticalScrollPosition;
		}
	
		
	]]>
</mx:Script>
</mx:Application>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久久久女警 | 一本色道久久加勒比精品| 色综合久久88色综合天天免费| 激情图区综合网| 一区二区三区精品在线| 日韩欧美国产精品| 欧美日韩不卡一区二区| 国产精品正在播放| 国产精品1区2区| 成人久久久精品乱码一区二区三区| 亚洲高清免费在线| 17c精品麻豆一区二区免费| 欧美一区二区三区在线观看视频| 成人中文字幕电影| 91婷婷韩国欧美一区二区| 精品一区免费av| 午夜精品久久久| 尤物av一区二区| 国产欧美日韩在线看| 欧美一区二区不卡视频| 亚洲自拍另类综合| 欧美日韩一二区| 97精品电影院| 国产69精品久久777的优势| 蜜桃视频免费观看一区| 亚洲一区二区成人在线观看| 免费在线观看一区| 亚洲成人动漫在线免费观看| 亚洲精品午夜久久久| 日韩精品国产精品| 免费av网站大全久久| 国产成人亚洲综合色影视| 精品一区二区三区在线观看国产 | 国产欧美视频一区二区| 亚洲天堂av一区| 国产精品美女久久久久久久久久久 | 欧洲精品在线观看| 94-欧美-setu| 欧美日韩国产综合一区二区三区| xf在线a精品一区二区视频网站| 制服丝袜激情欧洲亚洲| 欧美喷水一区二区| 一区二区国产盗摄色噜噜| 亚洲国产成人91porn| 久久99精品久久久久久久久久久久| 国产最新精品精品你懂的| 色综合天天综合给合国产| 午夜精品福利一区二区三区av | 美女www一区二区| 91在线观看视频| 日韩精品一区二区在线| 亚洲欧洲精品一区二区三区| 综合色中文字幕| 精品一区二区三区av| 欧美日韩中文字幕精品| 国产精品久久久久久久浪潮网站 | 国产一区二区三区| 国模冰冰炮一区二区| 欧美无乱码久久久免费午夜一区 | 久久爱www久久做| 国产成人免费高清| 日韩欧美自拍偷拍| 中国av一区二区三区| 美女视频一区二区| 欧美日韩精品专区| 一区二区三区影院| 99精品久久只有精品| 中文字幕国产精品一区二区| 中文字幕在线视频一区| 国产麻豆精品在线观看| 精品三级在线看| 日韩毛片精品高清免费| 国产98色在线|日韩| 久久精品欧美一区二区三区麻豆| 久久久久久久国产精品影院| 久久久99免费| 麻豆高清免费国产一区| 欧美久久久久久久久| 国产日韩精品一区二区三区在线| 日韩高清在线观看| 成人免费av网站| 国产午夜精品久久久久久免费视 | 免费成人深夜小野草| 欧美日本一区二区三区| 亚洲va欧美va人人爽午夜| 欧美天堂一区二区三区| 亚洲第一综合色| 国产一二精品视频| 日韩欧美国产一二三区| 国产一区在线不卡| 久久精品一区二区三区不卡 | 欧洲av一区二区嗯嗯嗯啊| 亚洲精品视频一区二区| 精品视频免费在线| 麻豆一区二区99久久久久| 日韩一级黄色片| 国产一区二区在线观看视频| 亚洲国产电影在线观看| 色综合久久99| 裸体在线国模精品偷拍| 国产喷白浆一区二区三区| 一本大道av伊人久久综合| 亚洲综合视频在线观看| 日韩精品一区二区三区蜜臀| 丁香六月久久综合狠狠色| 亚洲卡通欧美制服中文| 日韩视频免费观看高清完整版 | 欧美三级电影网站| 精品一区二区精品| 亚洲婷婷综合色高清在线| 欧美日韩国产首页| 国产**成人网毛片九色| 天天操天天干天天综合网| 国产喂奶挤奶一区二区三区| 色八戒一区二区三区| 国产精品私人影院| 在线不卡a资源高清| 成人激情午夜影院| 欧美激情一区在线观看| 欧美视频一区二区在线观看| 国产传媒久久文化传媒| 日韩中文欧美在线| 国产精品久久免费看| 欧美本精品男人aⅴ天堂| 91日韩精品一区| 国产盗摄视频一区二区三区| 人人精品人人爱| 亚洲综合一区二区三区| 久久久99精品久久| 欧美乱熟臀69xxxxxx| 99re成人精品视频| 国产成人精品影视| 美国毛片一区二区三区| 亚洲国产精品影院| 18欧美亚洲精品| 国产欧美日韩精品a在线观看| 5566中文字幕一区二区电影| 91国产福利在线| av电影一区二区| 依依成人精品视频| 国产精品久久久久久亚洲毛片| 精品国产乱码久久久久久老虎 | 麻豆国产精品一区二区三区| 亚洲一区视频在线观看视频| 1区2区3区欧美| 国产精品视频九色porn| 国产亚洲短视频| 精品99999| www国产亚洲精品久久麻豆| 91精品国产乱| 欧美一区二区私人影院日本| 91精品免费在线观看| 欧美午夜一区二区三区免费大片| 在线亚洲人成电影网站色www| www.亚洲色图.com| 成人av电影在线| 99久精品国产| 在线视频国内自拍亚洲视频| 色综合久久久久| 欧美色图天堂网| 欧美疯狂做受xxxx富婆| 欧美精品国产精品| 日韩精品一区国产麻豆| 26uuu欧美| 国产精品五月天| 亚洲色图一区二区三区| 亚洲一区二区影院| 天堂va蜜桃一区二区三区漫画版| 日韩电影在线一区二区| 精品无人区卡一卡二卡三乱码免费卡| 久久国产精品免费| 成人av电影在线网| 欧美日韩一区不卡| 亚洲精品一区二区三区99| 欧美激情一区三区| 亚洲午夜免费电影| 久久精品国产77777蜜臀| 国产白丝精品91爽爽久久| 91老师国产黑色丝袜在线| 欧美性大战久久久久久久| 日韩免费视频线观看| 国产精品久久久一本精品| 亚洲影视资源网| 精品在线亚洲视频| 色狠狠综合天天综合综合| 日韩久久精品一区| 国产精品卡一卡二卡三| 日韩一区精品视频| 成人黄色在线视频| 在线成人小视频| 中文字幕+乱码+中文字幕一区| 夜夜嗨av一区二区三区四季av| 蜜臀av亚洲一区中文字幕| 不卡视频一二三| 欧美一级在线免费| 中文字幕一区二区日韩精品绯色| 日韩国产欧美视频| 色综合久久久久综合体| 久久综合给合久久狠狠狠97色69| 亚洲免费伊人电影|