隨筆 - 8  文章 - 55  trackbacks - 0
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          朋友的Blog

          最新評論

          閱讀排行榜

          評論排行榜

          FCS組件篇:RoomList組件

          2004年11月21日00:01星期日 [ FMS ]


          好像還挺多人喜歡使用roomlist組件,我倒是沒有怎么使用這個組件,所以原本對這個組件的作用也有點模糊,總覺得這個組件的作用不大(因為完全可以通過動態(tài)改變simpleconnect的參數(shù)來實現(xiàn)登錄不同的房間),不過看了下這個組件還是其它復(fù)雜的使用,寫這篇文章的同時我也學(xué)習(xí)一下。
          RoomList的組件的作用是讓用戶可以創(chuàng)建、進(jìn)入和刪除房間(確切的說是一個應(yīng)用程序?qū)嵗T摻M件類似于一個應(yīng)用程序管理處,可以控制用戶訪問不同的應(yīng)用程序。
          RoomList組件有兩種使用方式:
          1. 通過虛擬大廳登錄不同的應(yīng)用程序?qū)嵗?br />2. 使用大廳應(yīng)用程序作為入口,登錄另外的房間應(yīng)用程序
          第一種方法是比較簡單的,不過其實道理都相同。下面以第二種方式為例說明。
          要使用RoomList組件,你必須要創(chuàng)建兩個應(yīng)用程序:大廳和房間。打個比方的話,大廳應(yīng)用程序可以認(rèn)為是起始入口,而房間才是用戶的目的地。其實roomlist組件可以登錄任何fcs應(yīng)用程序,你也可以打開同一個應(yīng)用程序的不同實例,只要這些實例具有唯一的會話ID。
          如果你使用simpleconnect組件的話,并不需要在客戶端添加代碼就可以使用roomlist組件。服務(wù)器端的大廳應(yīng)用程序目錄的main.asc文件中需要加載component.asc文件。
          在房間應(yīng)用程序的服務(wù)器腳本中,也需要加載component.asc文件,并取得用戶和房間的名稱,以及管理房間和用戶統(tǒng)計等。中間包含了在服務(wù)器端的來回帶參數(shù)調(diào)用,但是并不控制用戶是否以及連接到該應(yīng)用程序。如果需要單獨使用roomlist組件的話,在房間應(yīng)用程序中,你必須傳遞用戶名和應(yīng)用程序?qū)嵗D闶褂昧藄impleconnect組件的話,這些都是自動完成的。
          下面我們來分析一個簡單的例子。
          首先創(chuàng)建大廳應(yīng)用程序,步驟如下:
          1. 在服務(wù)器端創(chuàng)建lobby_com_test目錄,并創(chuàng)建main.asc文件,添加下面代碼
          ?load('components.asc');
          2. 創(chuàng)建客戶端文件,名為lobby_com_test. 添加SimpleConnect組件,應(yīng)用程序路徑為rtmp:/lobby_com_test
          3. 添加roomlist組件,實例名為roomList_mc
          4. 在simpleconnect組件列表中添加roomList_mc實例
          5. 設(shè)定roomlist組件的目標(biāo)room應(yīng)用程序位置,如../chat_room_test/chat_room_test.html(這個路徑是調(diào)用網(wǎng)站的html文件,根據(jù)你的實際位置調(diào)整)
          6. 創(chuàng)建一個房間應(yīng)用程序(或者使用之前開發(fā)的任何聊天室應(yīng)用程序),名稱為chat_room_test
          7. 在chat_room_test.fla中添加simpleconnect組件,實例名為connector_mc,應(yīng)用程序路徑為 rtmp:/chat_room_test,
          8. 發(fā)布應(yīng)用程序的時候,會生成一個chat_room_test.html文件
          9. 更改HTML參數(shù)設(shè)定,把文件body標(biāo)識內(nèi)容替換為:

          10. 在服務(wù)器端的chat_room_test目錄下面創(chuàng)建main.asc文件,其中添加代碼如下:
          01 : // 加載組件包含文件
          02 : load( 'components.asc' );
          03 :
          04 : //在應(yīng)用程序連接事件中增加用戶ID到全局變量,允許客戶端連接,調(diào)用方法獲取房間實例名稱等
          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 : //房間連接時候傳遞用戶選擇的房間名稱,調(diào)用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 : // 斷開連接的事件響應(yīng)
          38 : // 客戶端斷開連接,通知大廳應(yīng)用程序
          39 : application.onDisconnect = function( client ) {
          40 : if (client.room != null) {
          41 : roomDisconnect(client.room);
          42 : }
          43 : }
          44 : //調(diào)整房間數(shù)據(jù),移除用戶顯示
          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文件,重啟應(yīng)用程序,按照下面步驟測試roomlist組件。
          1. 打開包含lobby_com_test.swf文件的lobby_com_test.html,并登錄服務(wù)器
          2. 增加房間到房間列表
          3. 選擇房間,進(jìn)入
          4. 一個新的 chat_room_test應(yīng)用程序?qū)嵗翱跁蜷_
          5. 用同樣的方式打開另一個房間實例
          posted on 2006-06-08 13:59 blog搬家了--[www.ialway.com/blog] 閱讀(527) 評論(0)  編輯  收藏 所屬分類: FMS
          主站蜘蛛池模板: 福州市| 得荣县| 尼木县| 大足县| 铁岭县| 南漳县| 万荣县| 陆丰市| 唐山市| 江都市| 鸡西市| 江西省| 肇东市| 黄浦区| 彭泽县| 长治市| 丽水市| 阿拉善左旗| 全椒县| 武清区| 哈巴河县| 祁连县| 辽宁省| 巴青县| 唐河县| 舞钢市| 林甸县| 东阿县| 金华市| 砚山县| 微山县| 达州市| 阿克| 政和县| 黄冈市| 吴堡县| 治多县| 九台市| 辉县市| 屯昌县| 墨竹工卡县|