Luar's Flash Playground:Broadcast、Feedback和Private Call
新聞(101)
觀點或評論(94)
Flash書(63)
教程(73)
Design Patterns(3)
FlashCom筆記(47)
Flash Remoting筆記(27)
Flex筆記(11)
Flash Lite筆記(14)
PHP資訊(23)
Ajax筆記(9)
習作(51)
組件(17)
酷站(32)
學習資源(28)
書籍推介(15)
本站與我(91)
RSS瀏覽器
聯絡
熱愛鑽研
Ajax
ActionScript
Flash
Flash Lite
Flex
Flash Remoting
FlashCom
Director
Lingo
PHP
Multiplayer Game

搜尋
VCASMO
Broadcast、Feedback和Private Call (25-05-2003)
利用FlashCom製作任何多人連線的應用時,明白Broadcast、Feedback、Private Call三種概念的分別,便可以清楚知道何時需要應用那一種情況,與及應該如何編程。

Broadcast
Broadcast是向所有人廣播,假設Client邊有5個人連線,5個人都可以收到這個訊息,這個訊息可以是由Server向5個人發出;或是是其中一個人,通過Server向5個人發出。要做到廣播,主要利用Server邊的SharedObject.send()。

例如:
Client邊發送:
NetConnection.call("msgFromClient", null, msg);

Server邊:
NetConnection.msgFromClient = function(msg) {
    application.SharedObject.send("msgFromSrvr", msg);
};
Client邊接收:
SharedObject.msgFromSrvr = function(msg) {...};


Feedback
Feedback指Server向自己發出訊息,例如自已利用NetConnection.call()呼叫Server邊的Function,Server邊又用NetConnection.call()呼叫Client邊的Function作出回應,留意Server邊這個NetConnection.call()只可以Client自已收到,別的Client是收不到。

例如:
Client邊發送:
NetConnection.call("msgFromClient", null, msg);

Server邊:
NetConnection.msgFromClient = function(msg){
    Client.call("msgFromSrvr", false, msg);
};
Client邊接收:
NetConnection.msgFromSrvr = function(msg) {...};


Private Call
應用Chat Room的情形,就是私下交談,Client邊有5個人(A-E),A有些說話只想對E說,別的人不會收到,這就是Private Call的概念。FlashCom沒有直接ActionScript可以做到,利用一個較迂迴方法去做。首先Server邊有一個Object叫Client,當每一個Client邊連線成功後,Server邊的application下便會產生一個Client Instance,例如有5個人,就有5個Client Instances,分別是application.clients[0]至application.clients[4],只要利用Prototype對Client Object擴充一個新Method,Method中有一個For Loop,檢查Client Instance的ID(假設每個Client邊連線都有一個Unique ID),當ID跟接收者的ID相同時,便利用application.clients[i].call()去Call接收者的Function。

例如:
Client邊發出:
NetConnection.call("msgFromClient", null, id, msg);

Server邊:
Client.prototype.msgFromClient = function(id, msg) {
    for (var i = 0;i<application.clients.length;i++){
        if (application.clients[i].name == id) {
            application.clients[i].call("msgFromSrvr", null, msg);
        }
    }
};
Client邊接收:
NetConnection.msgFromSrvr = function(msg) {...};
本文章由發表。
意見
  • 在flash中應該怎麼寫?

    Monty於06-06-2003發表

  • 我覺得Feedback中的server描述有錯誤的地方。Netconnection.call()是調用一個 Flashcom或者應用服務器上的方法.要呼叫client端就要改為:
    client.call("msgFromSrvr", false, msg);完整的code應為:
    client.msgFromClient = function(msg){
    client.call("msgFromSrvr", false, msg);
    };

    不知luar同意否。

    由guly於07-11-2003發表

  • 嗯,改了。

    luar於07-11-2003發表

  • 我在server端用Netconnection定義函數,在client端找不到呀
    Client邊發送:
    NetConnection.call("msgFromClient", null, msg);
    Server這邊,用NetConnection.msgFromClient = function(msg){
    Client.call("msgFromSrvr", false, msg);
    };
    調試的時候會說method not found,但是把server端改為Client.prototype.msgFromClient = function (msg) {Client.call("msgFromSrvr", false, msg);} 可以找到並執行

    由kxw9c於21-11-2003發表

  • 為什麼我按照luar在私聊弁鄐W的做法做了後,在com app 和04里都會報錯,無法連接,或者 client 不存在,或者其他錯誤
    還請luar指點!

    由versace於16-07-2004發表

同組文章

Movable Type 4.32-en系統支持,Luar's Production版權所有。