<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
width="850" height="100%" viewSourceURL="srcview/index.html">
<mx:Style source="main.css"/>
<mx:Script>
<![CDATA[
import org.osflash.thunderbolt.Logger;
import events.WhiteboardEvent;
import events.CustomMapEvent;
import events.ChatEvent;
import model.SOModel;
import model.NCConnect;
[Bindable]
private var userName:String;
[Bindable]
private var roomName:String;
private var nc:NCConnect;
private var soModel:SOModel;
private function joinRoom():void
{
userName = connectPanel.userName;
roomName = connectPanel.roomName;
nc = new NCConnect();
nc.addEventListener( NetStatusEvent.NET_STATUS, netStatusHandler );
nc.connectRTMP( userName, roomName );
}
private function init():void
{
soModel = new SOModel();
soModel.addEventListener( ChatEvent.CHAT, onChatMsgIn );
soModel.addEventListener( CustomMapEvent.MAP, onMapSyncIn );
soModel.addEventListener( WhiteboardEvent.WB, onWBSyncIn );
soModel.connectSO( nc );
chatPanel.addEventListener( ChatEvent.CHAT, onChatMsgOut );
mapArea.addEventListener( CustomMapEvent.MAP, onMapSyncOut );
mapArea.addEventListener( WhiteboardEvent.WB, onWBSyncOut );
vs.selectedIndex = 1;
if (Application.application.parameters.roomname)
roomName = Application.application.parameters.roomname;
}
private function netStatusHandler( e:NetStatusEvent ):void
{
trace(e.info.code)
var msg:String;
switch ( e.info.code )
{
case "NetConnection.Connect.Success":
init();
break;
case "NetConnection.Connect.Rejected":
break;
case "NetConnection.Connect.Failed":
break;
case "NetConnection.Connect.Closed":
break;
}
}
private function onWBSyncOut( e:WhiteboardEvent ):void
{
Logger.info("onWBSyncOut");
soModel.sendWBSync( e );
}
private function onWBSyncIn( e:WhiteboardEvent ):void
{
Logger.info("onWBSyncIn");
mapArea.wb.messageHandler( e );
}
private function onMapSyncIn( e:CustomMapEvent ):void
{
trace("onMapSyncIn");
mapArea.messageHandler( e );
}
private function onMapSyncOut( e:CustomMapEvent ):void
{
trace("onMapSyncOut");
soModel.sendMapSync( e );
}
private function onChatMsgIn( e:ChatEvent ):void
{
if (userName != e.data.userName)
chatPanel.displayMessage( e.data.userName, e.data.msg );
}
private function onChatMsgOut( e:ChatEvent ):void
{
soModel.sendMsg( e );
}
]]>
</mx:Script>
<mx:ViewStack id="vs" width="100%" height="100%" creationPolicy="all">
<ConnectPanel id="connectPanel" joinRoom="joinRoom()"/>
<mx:VBox width="100%" height="100%">
<MapArea id="mapArea" userName="{userName}" roomName="{roomName}" height="500"/>
<ChatPanel id="chatPanel" height="100%" userName="{userName}"/>
</mx:VBox>
</mx:ViewStack>
</mx:Application>