SmartForxServer handleInternalEvent的事件类型

Smartfoxserver虽然是商业的游戏服务器,但是文档很不完善,在写服务器的扩展以及和服务器端交互的客户端代码时,觉得很困难。比如说写服务器扩展时,你可能要处理内部的事件,那么你需要重载handleInternalEvent, 然后这个函数会为服务器自动调用。但是你要知道发生的是什么事件时,你可能无从下手。而官方的网站也没有对应很详细的说明。

 

(如果有人知道请告知,请写在评论中,不胜感激, 哈哈,今天终于找到了:http://www.smartfoxserver.com/docs/docPages/javadoc/it/gotoandplay/smartfoxserver/events/InternalEventObject.html

 

看一下这个函数传进来的参数:

InternalEventObject, 其实你查这个类的详细说明,同样是没有,那怎么办?

那就猜,写代码测试你的猜测。假设你是在Eclipse中编辑代码,因为有了它,它至少可以给你提示它有什么方法和属性。

public void handleInternalEvent(InternalEventObject arg0)

你可以用arg0然后再输入点, 即  arg0.   Eclipse就会列出所有方法和属性,看到一个getEventName对吧,看这个比较像,那就试试这个吧,你不用试了,我已经帮你试了,确实可以得到事件。测试的方法就是把每次这个函数的返回值答应出来,看看和实际发生的事情是否相符,比如说login, logout, get lost等等。

 

这个方法同时告诉你这些事件的事件名, 

login———-userLogin

logout——–userLogout

get lost——-userLost

 

那你是不是还想知道更多的事件名,对吧。难道你还要用这个方法吗?可以吗?当然可以。其实我们还有一种方法,这是我后来无意中发现的。

就是arg0然后’点’一下,让Ecilpse显示出所有的方法和属性,往下拉,显示出最下面的属性和方法,你就看到所有可用的事件了,如EVENT_JOIN。

好了,让我列出所有的事件吧:

  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_LOGIN = “loginRequest”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_LOGOUT = “logOut”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_JOIN = “userJoin”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_USER_EXIT = “userExit”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_USER_LOST = “userLost”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_SPECTATOR_SWITCHED = “spectatorSwitched”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_NEW_ROOM = “newRoom”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_ROOM_LOST = “roomLost”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_PUBLIC_MESSAGE = “pubMsg”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_PRIVATE_MESSAGE = “privMsg”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_FILE_UPLOAD = “fileUpload”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_SERVER_READY = “serverReady”;
 
  // Field descriptor #6 Ljava/lang/String;
  public static final java.lang.String EVENT_PLAYER_SWITCHED = “playerSwitched”;

 

看到了吧,其实我们之前测试中打印出来的就是这些事件的事件名。

 

 

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

2 thoughts on “SmartForxServer handleInternalEvent的事件类型

    1. huangxiansheng1980

      回复 soft_ran:
      handleinternalevent: 是发生服务器事件的时候被调用,如用户的connect, disconnect, login, logout等。
      handleRequest: 是client端提交自定义的事件时被调用

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *