📄 room.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 + -