zoukankan      html  css  js  c++  java
  • Flex教學簡易版的聊天室(for FMS)

      先前曾試過FluorineFx裡的Remoting聊天室範例,但始終一直出現錯誤訊息,上網找尋Flex聊天室,大部分都是搭配Java,除了本身不會Java外,也無平台可測試,因此只好投降輸一半,但今天在GoogleAdobe論壇中,看到有人發問關於fms製作聊天室,此時又勾起梅干桑的好奇心,便使用fms作關鍵字,總算找到有好心人士的分享,除了有詳盡的教學解說外,還提供原始碼的下載,經梅干桑測試後,卻意外中的順利,同時不用搭配任何的Server端程式,只要FMS+Flex就可實現聊天室的夢想,接下來就為各位來介紹一下,如何設置FMS讓它變成聊天室伺服器。
    Step1
    進入C:Program FilesAdobeFlash Media Server 3tools目錄下,雙響StartServerService.bat啟動FMS伺服器。


    Step2
    接著在C:Program FilesAdobeFlash Media Server 3applications目錄下建立一個test_myApp的資料夾。

    Step3
    回到C:Program FilesAdobeFlash Media Server 3目錄,雙響fms_adminConsole.swf並輸入先前安裝時所設定密碼,登入管理界面。

    Step4
    進入管理界面後,先點選Manage Servers / Applications,看下方有無看所建立的test_myApp資料夾,若沒有的話待會將會無法使用。

    Step5
    都完成以上設定後,接下來開啟Flex並新增一個專案,將下列的語法貼入。
    FMSChat.mxml
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" creationComplete="init()" viewSourceURL="srcview/index.html">
    <mx:Script>
    <![CDATA[
    import vo.Message;
    import mx.collections.ArrayCollection;
    import mx.controls.Alert;
     
    private var myNetConnection:NetConnection;
    private var serverApp:String ="rtmp://127.0.0.1/test_myApp";
    private var talk_so:SharedObject;
     
    private function init():void
    {
    btn_send.addEventListener(MouseEvent.CLICK,btnSenClickHandler);
    myNetConnection = new NetConnection();
    myNetConnection.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
    myNetConnection.connect(serverApp);
    }
     
    private function netStatusHandler(evt:NetStatusEvent):void
    {
    trace(evt.info.code);
     
    if ( evt.info.code =="NetConnection.Connect.Success" )
    {
    talk_so = SharedObject.getRemote("talk",myNetConnection.uri,true);
    talk_so.addEventListener(SyncEvent.SYNC,talkSoSyncHandler);
    talk_so.connect(myNetConnection);
    }
    else
    {
    Alert.show("連接失敗"+evt.info.code);
    }
    }
     
    private function talkSoSyncHandler(evt:SyncEvent):void
    {
    txt_content.text="";
    if ( talk_so.data.msgList!=null )
    {
    var tmp:ArrayCollection = new ArrayCollection();
    convertArrayCollection(tmp,talk_so.data.msgList as ArrayCollection);
     
    for(var i:int=0;i<tmp.length ;i++)
    {
    var message:Object = tmp.getItemAt(i);
     
    var fullMsg:String=message.nickname+"在"+message.time.toTimeString()+"說:"+message.msg;
     
    txt_content.text=txt_content.text+fullMsg+"n";
    }
    }
    }
     
    private function btnSenClickHandler(evt:MouseEvent):void
    {
    var arr:ArrayCollection = new ArrayCollection();
     
    if ( talk_so.data.msgList==null )
    {
    arr = new ArrayCollection();
    }
    else
    {
    convertArrayCollection(arr,talk_so.data.msgList as ArrayCollection);
    }
     
    var obj:Message = new Message();
    obj.nickname=txt_nickname.text;
    obj.msg=txt_message.text;
    obj.time = new Date();
     
    arr.addItem(obj);
     
    talk_so.setProperty("msgList",arr);
    txt_message.text="";
    }
     
    private function convertArrayCollection(arrNew:ArrayCollection,arrOld:ArrayCollection):void
    {
    arrNew.removeAll();
     
    for(var i:int=0;i<arrOld.length ;i++)
    {
    arrNew.addItemAt(arrOld.getItemAt(i),i);
    }
    }
     
    ]]>
    </mx:Script>
     
    <mx:TextArea x="33" y="10" height="159" width="366" id="txt_content"/>
    <mx:TextInput x="33" y="177" width="62" id="txt_nickname"/>
    <mx:Label x="103" y="179" text="說"/>
    <mx:TextInput x="146" y="177" width="185" id="txt_message"/>
    <mx:Button x="334" y="177" label="send" id="btn_send"/>
     
    </mx:Application>

    Step6
    接下來於src下建立一個vo,並新增一個Message.as的類別檔。
    Message.as
    1 2 3 4 5 6 7 8 9 10 11
    package vo{
    public class Message
    {
    public function Message()
    {
    }
    public var nickname:String;
    public var msg:String;
    public var time:Date;
    }
    }

    Step7
    好了之後按下上方的箭頭測試一下,成功的話會出現如圖下的畫面。

    [範例下載]

  • 相关阅读:
    android中textview字数过长解决方法
    Android的EditText无法自动弹出输入法问题 .
    android中dip、dp、px、sp和屏幕密度
    android横竖屏切换 判断activity 是横屏还是竖屏
    设置ListView中图片的大小大方法 Android
    TextView属性详细分析
    ArcGIS API For Silverlight 实例分析
    Visual Studio 2008 里修改数据库表结构报错 解决办法
    未能加载文件或程序集“xxx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集
    SuperMap iClient 6R for Silverlight 产品简介及Beta测试软件下载地址
  • 原文地址:https://www.cnblogs.com/dzone/p/2037321.html
Copyright © 2011-2022 走看看