(一)Hello,World!

第一个关于ElectroServer的程序是喜闻乐见的Hello,World! 

最终效果图:

 

第一步:导入

import com.electrotank.electroserver4.ElectroServer;
import com.electrotank.electroserver4.entities.Protocol;
import com.electrotank.electroserver4.message.event.ConnectionEvent;
import com.electrotank.electroserver4.message.event.PrivateMessageEvent;
import com.electrotank.electroserver4.message.MessageType;
import com.electrotank.electroserver4.message.request.LoginRequest;
import com.electrotank.electroserver4.message.request.PrivateMessageRequest;
import com.electrotank.electroserver4.message.response.LoginResponse;
import flash.display.Sprite;
import flash.events.DataEvent;
import flash.events.Event;
import flash.text.TextField;

 

第二步:初始化

这里先创建ElectroServer实例,然后监听3个事件,分别是连接、登陆和私信。这里需要注意addEventListener函数不是我们熟悉的写法,而是ElectroServer实例的特殊方法,第二个参数为函数名字符串而不是函数名,第三个参数也是必须的,指定作用域。

然后设置协议,这里是二进制。

创建新的连接,第一个参数为ip地址字符串,第二个参数为端口。

最后创建TextField记录各步骤行为。

es = new ElectroServer();
es.addEventListener(MessageType.ConnectionEvent, "onConnectionEvent", this);
es.addEventListener(MessageType.LoginResponse, "onLogin",this);
es.addEventListener(MessageType.PrivateMessageEvent, "onPrivateMessageEvent", this);
es.setProtocol(Protocol.BINARY);
es.createConnection("127.0.0.1", 9899);
createTextField();

 

第三步:处理连接响应

    如果连接成功则新建登录请求,设置该请求用户名,然后送之。这里需要特别注意函数修饰符为public,不能为private否则报错。其他几个处理函数相同。

public function onConnectionEvent(e:ConnectionEvent):void {
if (e.getAccepted()) {
   log("成功连接服务器!");
//build the request
var lr:LoginRequest = new LoginRequest();
    lr.setUserName("coolman" + Math.round(10000 * Math.random()));
    //send it
    es.send(lr);
log("发送登陆请求.");
  } else {
    log("Connection failed. Reason: " + e.getEsError().getDescription());
  }
}

 

第四步:处理登陆请求响应

如果登陆成功,则发送给服务器一条私信,目标是自己,设置内容后发送之。

public function onLogin(e:LoginResponse):void
{

if (e.getAccepted())
   {

log("您已经成功登陆!");

var pmr:PrivateMessageRequest = new PrivateMessageRequest();

pmr.setUserNames([e.getUserName()]);

pmr.setMessage("Hello World!");

es.send(pmr);

log("发送消息!");

}

else

{

log("登陆失败!");

}

}

 

第五步:处理接受信息响应

直接记录消息内容。

public function onPrivateMessageEvent(e:PrivateMessageEvent):void {                        

      log("来自 " + e.getUserName() + "的消息: " + e.getMessage());

}

   

下面是log函数和createTextField函数: 

private function log(description:String):void

{

tf.appendText(description+"\n");

}



private function createTextField():void

{

tf = new TextField();

tf.width = 780;

tf.height = 580;

tf.x = tf.y = 10;

tf.border = true;

addChild(tf);

}

 

原代码如下:

posted on 2012-01-16 13:57  再不能这样活  阅读(230)  评论(0编辑  收藏  举报