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