⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 room.as

📁 包括所有源文件类,加载容器类,FMS2.0服务端文件类 具体的请打开项目文件,所有文件都在那里 另外加点说明: config.xml,客户端和FMS服务端各有一个.两个设置要相同,里面是服务器运行路径
💻 AS
字号:
package com.junhuanet.chatroom.room
{
	import flash.display.*;
	import flash.text.*;
	import flash.utils.ByteArray;
	import fl.controls.ComboBox;
	import fl.controls.RadioButton;
	import fl.controls.RadioButtonGroup;
	import fl.controls.ColorPicker;
	import fl.controls.UIScrollBar;
	import flash.net.NetStream;
	import flash.net.NetConnection;
	import flash.media.*;
	import flash.events.*;
	import flash.net.*;
	import com.junhuanet.chatroom.room.CameraItem;
	public class Room extends MovieClip
	{
		private var camera_mc:MovieClip;
		private var objRoom:Object=new Object();
		private var objUser:Object=new Object();
		private var rbgKey:RadioButtonGroup;
		private var sound:Sound;
		private var song:SoundChannel;
		private var arrBytes:ByteArray=new ByteArray();
		private var rbgKeys:RadioButtonGroup;
		public function Room()
		{
			initRoom();
		}
		public function attachContent(user:String,_camera:Camera):void
		{
			var objTemp:Object=camera_mc.getChildByName("user0");
			objTemp.camera_v.attachCamera(_camera);
		}
		public function attachUserStream(user:String,_stream:NetStream):void
		{
			for(var i=0;i<objRoom.online.length;i++)
			{
				var objTemp:Object=camera_mc.getChildByName("user"+i);
				if(objTemp.user==user)
				{
					_stream.play(user);
					objTemp.camera_v.attachNetStream(_stream);
					return;
				}
			}

		}
		public function setRoomUser(room:Object,user:Object):void
		{
			objRoom=new Object();
			objRoom=room;
			objUser=new Object();
			objUser=user;
			setRoomInfo();
			setCameraInfo();
		}
		public function addChatText(type:Number,user:String,msg:String,col:String):void
		{
			var strtype:String;
			switch(type)
			{
				case 1:
					strtype="<font color=\"#FF0000\"><font size=\"12\"><b>【系统消息】: </b> "+msg+"</font></font>";
					break;
				case 0:
					strtype="<font color=\"#"+col+"\"><font size=\"12\"><b>【"+user+"】: </b> "+msg+"</font></font>";
					break;
			}
			chat_txt.htmlText+=strtype+"</br>";
			chat_txt.scrollV=chat_txt.maxScrollV;
			usbBar.update();
		}
		public function startPlayMusic(path:String):void
		{
			sound=new Sound();
			sound.load(new URLRequest(path));
			sound.addEventListener(IOErrorEvent.IO_ERROR,showMusicError);
			SoundMixer.stopAll();
			song=sound.play();
			musicStyle_mc.addEventListener(Event.ENTER_FRAME,showMusicStyle);
		}
		//*********************************************
		private function initRoom():void
		{
			setCommStyle();
			getMusic();
			rbgKeys=new RadioButtonGroup("rbgKey");
			exit_btn.addEventListener(MouseEvent.CLICK,exitClick);
			play_btn.addEventListener(MouseEvent.CLICK,playClick);
			send_btn.addEventListener(MouseEvent.CLICK,sendClick);
			this.addEventListener(KeyboardEvent.KEY_DOWN,checkKeyDown);
		}
		private function setCommStyle():void
		{
			chat_txt.wordWrap=true;
			chat_txt.htmlText="";
			var _tft:TextFormat=new TextFormat();
			_tft.color=0x000000;
			_tft.size=12;
			cbMusic.prompt="您可以在这里输入音乐地址,然后点击播放";
			cbMusic.textField.setStyle("textFormat",_tft);
			cbMusic.dropdown.setRendererStyle("textFormat",_tft);
			rbenter.setStyle("textFormat",_tft);
			rbctrl.setStyle("textFormat",_tft);
		}
		private function getMusic():void
		{
			var ur:URLRequest=new URLRequest("Music.xml");
			var ul:URLLoader=new URLLoader();
			ul.load(ur);
			ul.addEventListener(Event.COMPLETE,setMusic);
		}
		private function setMusic(event:Event):void
		{
			var arrTemp:Array=new Array();
			var xml:XML=XML(URLLoader(event.target).data);
			for(var i:int=0;i<xml.children().length();i++)
			{
				var e:XML=xml.children()[i];
				var o:Object=new Object();
				o.Name=e.child("Name").child(0).toXMLString();
				o.Mp3=e.child("Mp3").child(0).toXMLString();
				arrTemp.push(o);
			}
			for(var j:int=0;j<arrTemp.length;j++)
			{
				cbMusic.addItem({label:arrTemp[j].Name,data:arrTemp[j].Mp3});
			}
		}
		private function exitClick(event:MouseEvent):void
		{
			var objTemp:Object=this.parent.parent;
			objTemp.exitRoom(objRoom.userName);
		}
		private function playClick(event:MouseEvent):void
		{
			if(objUser.userName==objRoom.userName)
			{
				var path:String="";
				if(cbMusic.value!="")
				{
					if(cbMusic.selectedIndex==-1)
					{
						path=cbMusic.value;
					}
					else
					{
						path=cbMusic.selectedItem.data;
					}
				}
				if(path!="")
				{
					var objTemp:Object=this.parent.parent;
					objTemp.playMusic(objRoom.roomid,path);
				}
			}
			else
			{
				cbMusic.text="抱歉,只有房主才能播放音乐!";
			}
		}
		private function showMusicError(event:IOErrorEvent):void
		{
			cbMusic.text="引用的地址不可用,加载音乐失败!";
		}
		private function showMusicStyle(event:Event):void
		{
			SoundMixer.computeSpectrum(arrBytes,false);
			for(var i=0;i<256;i+=32)
			{
				var n:Number=arrBytes.readFloat();
				musicStyle_mc["music"+(i/32)+"_mc"].scaleY=1+n;
			}
		}
		private function setRoomInfo():void
		{
			room_txt.text=objRoom.name+" 房间编号: "+objRoom.roomid+" 房主: "+objRoom.nickName;
		}
		private function setCameraInfo():void
		{
			if(this.getChildByName("camera_mc"))
			{
				removeChild(camera_mc);
			}
			camera_mc=new MovieClip();
			camera_mc.name="camera_mc";
			camera_mc.x=15;
			camera_mc.y=35;
			addChild(camera_mc);
			var temp_array:Array=new Array();
			for(var i=0;i<objRoom.online.length;i++)
			{
				if(objRoom.online[i][0]==objUser.userName)
				{
					temp_array.push(objRoom.online[i]);
					objRoom.online.splice(i,1);
				}
			}
			for(var j=0;j<objRoom.online.length;j++)
			{
				temp_array.push(objRoom.online[j]);
			}
			objRoom.online=temp_array;
			var objTemp:Object=this.parent.parent;
			for(var k=0;k<objRoom.online.length;k++)
			{
				var temp_mc:MovieClip=new CameraItem();
				temp_mc.name="user"+k;
				temp_mc.x=154*k;
				temp_mc.user=objRoom.online[k][0];
				temp_mc.nick=objRoom.online[k][1];
				temp_mc.nick_txt.text=objRoom.online[k][1];
				temp_mc.exit_btn.addEventListener(MouseEvent.CLICK,exitUserClick);
				camera_mc.addChild(temp_mc);
				if(k==0)
				{
					objTemp.attachOwnerCamera(objRoom.online[k][0]);
				}
				else
				{
					objTemp.attachUserCamera(objRoom.online[k][0]);
				}
			}
		}
		private function exitUserClick(event:MouseEvent):void
		{
			var objTarget1:Object=event.target;
			var objTarget:Object=objTarget1.parent;
			var objTemp:Object=this.parent.parent;
			if(objUser.userName==objRoom.userName)
			{
				if(objTarget.user==objUser.userName)
				{
					objTemp.exitRoom(objRoom.userName);
				}
				else
				{
					addChatText(1,null,"<font color=\"#0000FF\">"+objTarget.nick+"</font> 被房主 <font color=\"#0000FF\">"+objRoom.nickName+"</font> 请离了房间!",null);
					objTemp.setExitRoom(objRoom.userName,objTarget.user);
				}
			}
			else
			{
				if(objTarget.user==objUser.userName)
				{
					objTemp.exitRoom(objRoom.userName);
				}
			}
		}
		private function sendClick(event:MouseEvent):void
		{
			sendMessage();
		}
		private function sendMessage():void
		{
			var str:String=input_txt.text;
			var col:String=cpColor.hexValue;
			if(str!="")
			{
				trace(str);
				input_txt.htmlText="";
				input_txt.text="";
				var objTemp:Object=this.parent.parent;
				objTemp.sendUserMsg(objRoom.roomid,str,col);
			}
		}
		private function checkKeyDown(event:KeyboardEvent):void
		{
			var nkey:Number=event.keyCode;
			var ntype:Number=Number(rbgKeys.selectedData);
			if(ntype==0)
			{
				if(nkey==13)
				{
					sendMessage();
				}
			}
			else
			{
				if(event.ctrlKey)
				{
					if(nkey==13)
					{
						sendMessage();
					}
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -