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 に答える