FCS組件篇:RoomList組件
2004年11月21日00:01星期日 [
FMS
]
好像還挺多人喜歡使用roomlist組件,我倒是沒有怎么使用這個組件,所以原本對這個組件的作用也有點模糊,總覺得這個組件的作用不大(因為完全可以通過動態改變simpleconnect的參數來實現登錄不同的房間),不過看了下這個組件還是其它復雜的使用,寫這篇文章的同時我也學習一下。
RoomList的組件的作用是讓用戶可以創建、進入和刪除房間(確切的說是一個應用程序實例)。該組件類似于一個應用程序管理處,可以控制用戶訪問不同的應用程序。
RoomList組件有兩種使用方式:
1. 通過虛擬大廳登錄不同的應用程序實例;
2. 使用大廳應用程序作為入口,登錄另外的房間應用程序
第一種方法是比較簡單的,不過其實道理都相同。下面以第二種方式為例說明。
要使用RoomList組件,你必須要創建兩個應用程序:大廳和房間。打個比方的話,大廳應用程序可以認為是起始入口,而房間才是用戶的目的地。其實roomlist組件可以登錄任何fcs應用程序,你也可以打開同一個應用程序的不同實例,只要這些實例具有唯一的會話ID。
如果你使用simpleconnect組件的話,并不需要在客戶端添加代碼就可以使用roomlist組件。服務器端的大廳應用程序目錄的main.asc文件中需要加載component.asc文件。
在房間應用程序的服務器腳本中,也需要加載component.asc文件,并取得用戶和房間的名稱,以及管理房間和用戶統計等。中間包含了在服務器端的來回帶參數調用,但是并不控制用戶是否以及連接到該應用程序。如果需要單獨使用roomlist組件的話,在房間應用程序中,你必須傳遞用戶名和應用程序實例名。你使用了simpleconnect組件的話,這些都是自動完成的。
下面我們來分析一個簡單的例子。
首先創建大廳應用程序,步驟如下:
1. 在服務器端創建lobby_com_test目錄,并創建main.asc文件,添加下面代碼
?load('components.asc');
2. 創建客戶端文件,名為lobby_com_test. 添加SimpleConnect組件,應用程序路徑為rtmp:/lobby_com_test
3. 添加roomlist組件,實例名為roomList_mc
4. 在simpleconnect組件列表中添加roomList_mc實例
5. 設定roomlist組件的目標room應用程序位置,如../chat_room_test/chat_room_test.html(這個路徑是調用網站的html文件,根據你的實際位置調整)
6. 創建一個房間應用程序(或者使用之前開發的任何聊天室應用程序),名稱為chat_room_test
7. 在chat_room_test.fla中添加simpleconnect組件,實例名為connector_mc,應用程序路徑為 rtmp:/chat_room_test,
8. 發布應用程序的時候,會生成一個chat_room_test.html文件
9. 更改HTML參數設定,把文件body標識內容替換為:
10. 在服務器端的chat_room_test目錄下面創建main.asc文件,其中添加代碼如下:
01 : // 加載組件包含文件
02 : load( 'components.asc' );
03 :
04 : //在應用程序連接事件中增加用戶ID到全局變量,允許客戶端連接,調用方法獲取房間實例名稱等
05 : application.onConnect = function( newClient, username, password ) {
06 : // Save the user name
07 : gFrameworkFC.getClientGlobals(newClient).username = username;
08 : // Accept the new user’s connection
09 : application.acceptConnection(newClient);
10 : // Get the instance name and update the room count
11 : if (this.name.indexOf('/') != -1) {
12 : newClient.room = this.name.substr(this.name.lastIndexOf('/')+1);
13 : roomConnect(newClient);
14 : }
15 : }
16 :
17 : //定義連接到房間的返回值處理
18 : function roomResult(newClient) {
19 : this.onResult = function(roomName) {
20 : newClient.call( 'FCSimpleConnect/connector_mc/roomName' ,null,roomName);
21 : }
22 : }
23 :
24 : //房間連接時候傳遞用戶選擇的房間名稱,調用roomResult得到返回值
25 : function roomConnect (newClient, room) {
26 : // Create a new NetConnection
27 : lobby_nc = new NetConnection();
28 : lobby_nc.onStatus = function (infoStatus) {
29 : if (infoStatus.code == 'NetConnection.Connect.Success' ) {
30 : lobby_nc.call( 'FCRoomList/roomlist_mc/roomConnect', new roomResult(newClient), newClient.room);
31 : }
32 : };
33 : // Connect to the lobby application
34 : lobby_nc.connect( 'rtmp://localhost/lobby_com_test' );
35 : }
36 :
37 : // 斷開連接的事件響應
38 : // 客戶端斷開連接,通知大廳應用程序
39 : application.onDisconnect = function( client ) {
40 : if (client.room != null) {
41 : roomDisconnect(client.room);
42 : }
43 : }
44 : //調整房間數據,移除用戶顯示
45 : function roomDisconnect (room) {
46 : // Create a new NetConnection
47 : lobby_nc = new NetConnection();
48 : lobby_nc.onStatus = function (infoStatus) {
49 : if (infoStatus.code == 'NetConnection.Connect.Success' ) {
50 : lobby_nc.call( 'FCRoomList/roomlist_mc/roomDisconnect' , null, room);
51 : }
52 : }
53 : // Connect to the lobby application
54 : lobby_nc.connect( 'rtmp://localhost/lobby_com_test' );
55 : }
保存main.asc文件,重啟應用程序,按照下面步驟測試roomlist組件。
1. 打開包含lobby_com_test.swf文件的lobby_com_test.html,并登錄服務器
2. 增加房間到房間列表
3. 選擇房間,進入
4. 一個新的 chat_room_test應用程序實例窗口會打開
5. 用同樣的方式打開另一個房間實例
posted on 2006-06-08 13:59
blog搬家了--[www.ialway.com/blog] 閱讀(520)
評論(0) 編輯 收藏 所屬分類:
FMS