SmartFoxServer 2x使用sfsApi,NullPointerException

时间:2012-08-11 04:54:01

标签: java smartfoxserver

我只是想在我的UserJoinedRoomHandler中设置一个房间变量(将用户的名字添加到房间变量中): 从我的JAVA扩展程序:

public class UserJoinedRoomHandler extends BaseServerEventHandler
{
    @Override
    public void handleServerEvent(ISFSEvent arg0) throws SFSException
    {
        User user = (User) arg0.getParameter(SFSEventParam.USER);
        Room room = (Room) arg0.getParameter(SFSEventParam.ROOM);
        trace("add p1 = " + user.getName() + " to room=" + room.getId());
        List<RoomVariable> listOfVars = new ArrayList<RoomVariable>();
        listOfVars.add( new SFSRoomVariable("player1Name", user.getName()) );
        ((MyExtension) getParentExtension()).sfsApi.setRoomVariables(user, room, listOfVars);   // NullPointerException here :(
    }
}

注意,我在MyExtention init()函数中抓取sfsAPI:

ISFSApi sfsApi = SmartFoxServer.getInstance().getAPIManager().getSFSApi();

对我来说这应该有效,我唯一能想到的是房间可能没有完全初始化(用户刚刚在此事件被触发之前创建了房间)。但无论如何我认为这应该是一个微不足道的场景,但它已经花了我很多时间。

欢呼任何帮助。

1 个答案:

答案 0 :(得分:0)

解决方案是直接使用Api:

((MyExtension)getParentExtension())。getApi()。setRoomVariables(user,room,listOfVars);

PS:不幸的是,没有办法发出1个房间变量。你必须提交一份清单,即使其长度只有1个。