0

multiplayerを使ったゲームに取り組んでいPhoton Serverます。HashMapsthroughを使用してデータを送信していますが、の関数でloadBalancingPeer.opRaiseEventデータを取得できません。onEventLoadBalancingClient

これが私のカスタムイベントコードです。

public void sendSomeEvent(int playerPosition) {

        HashMap<Object, Object> eventContent = new HashMap<Object, Object>();
        eventContent.put("key1", "ABC");

        this.loadBalancingPeer.opRaiseEvent((byte) 1, eventContent, false,
                (byte) 0); // this is received by OnEvent()
    }

ここにonEvent()コードがあります。

@Override
public void onEvent(EventData eventData) {
    super.onEvent(eventData);

    switch (eventData.Code) {
    case (byte) 1:
        String value = (String) eventData.Parameters
                .get("key1");
        ApplicationManager.onEventReceived(ab);
        break;      
    }
    // update the form / gui
    ApplicationManager.onClientUpdateCallback();
}

この関数ではnull値を取得していますが、このフォームでパタメーター データを表示します{-11={key1=ABC}, -2=1}。私が間違っているところを助けてください。前もって感謝します。

4

1 に答える 1

1

私は Photon を使用したことがありませんが、API ドキュメントを見た後、間違ったことをしていると思います。EventData も Map の一種です。

eventData.Code発生したイベントの場合、実際の値は である必要がOpertationCode.RaiseEventあり、イベント( byte ) 1はマップ内のキーEventCode.Codeでマップされます。

この EventData では、イベント コードは keyEventCode.Codeでマッピングされ、データは key でマッピングされますParameterCode.Data

だから...送信されたハッシュマップを取得するEventDataには、eventData.get( ParameterCode.Code ).

以下はうまくいくはずだと思います。試してみて、うまくいかない場合は、詳細なエラー ログを教えてください。

switch ( eventData.Code ) {
    // If it is a RaiseEvent
    case OperationCode.RaiseEvent:
        switch ( eventData.get( EventCode.Code ) ) {
            // If it is your event.
            case (byte) 1:
                HashMap< Object, Object > map = (HashMap<Object, Object>) eventData.get( ParameterCode.Data );

                HashMap< String, String > smap = new HashMap< String, String >();
                for( Object key : map.keySet() ) {
                    smap.put( (String) key, ( String ) map.get( key ) );
                }
                // Now smap is the HashMap<String, String> that you sent.
                // do something
                break;
        }
        break;
}

注:: これでうまくいくと確信しています。

于 2015-02-24T12:49:58.817 に答える