0

我只是想在我的 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();

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

为任何帮助而欢呼。

4

1 回答 1

0

解决方案是直接使用 Api:

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

PS:不幸的是,没有办法发布 1 个房间变量。您必须提交一个列表,即使它只有 1 个长度。

于 2012-10-24T05:38:42.620 回答