2004/12/18 | Broadcast、Feedback、Private Call
类别(FlashMedia) | 评论(0) | 阅读(304) | 发表于 09:55
摘自[http://luar.com.hk ]
利用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.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.name == id) {
application.clients.call("msgFromSrvr", null, msg);
}
}
};
Client边接收∶
NetConnection.msgFromSrvr = function(msg) { ... };
0

评论Comments

日志分类
首页[185]
Flash[123]
ColdFusion[2]
Flex[2]
FlashMedia[3]
RIA[4]
Other[43]
Python[0]
Design[8]