2014-07-08 4 views
0

내 게임에 Game Circle SDK & Whisper Sync를 통합하려고합니다. 코드를 구현했지만 문제가 발생했습니다. 게임을로드하고 WhisperSync에서 게임 상태를 가져 와서 내 로컬 변수를 설정하면 적절한 패치 대신 무작위로 흰색 패치가 관찰됩니다. GameCircle을 켜면 & Whisper Sync가 정상적으로 작동합니다.Cocos2d Android에서 GameCircle 통합 중에 흰색 패치가 발생했습니다.

내 게임은 Cocos2d Android를 사용하여 개발되었습니다.

이러한 문제가 발생 했습니까?

참조 용으로 이미지를 첨부했습니다.

enter image description here

일부 코드 : 데이터가 firstsync/alreadysync 방법에로드 된 후 부울 변수를 갖는 true로 설정하여 주위에 작업하여 해결

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, 
      WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    CCGLSurfaceView _glSurfaceView = new CCGLSurfaceView(this); 

    setContentView(_glSurfaceView); 

    CCDirector.sharedDirector().attachInView(_glSurfaceView); 

    CCDirector.sharedDirector().setDisplayFPS(false); 

    CCDirector.sharedDirector().setAnimationInterval(1.0f/60.0f); 

    CCScene scene = IntroLayer.scene(); 

    CCDirector.sharedDirector().runWithScene(scene); 
} 

@Override 
public void onResume() { 
    super.onResume(); 

    if (IS_AMAZON) { 

     AmazonGamesClient.initialize(this, callback, myGameFeatures); 
     AmazonGamesClient.getWhispersyncClient() 
       .setWhispersyncEventListener(
         new WhispersyncEventListener() { 

          @Override 
          public void onAlreadySynchronized() { 
           // TODO Auto-generated method stub 
           super.onAlreadySynchronized(); 
           System.out 
             .println("FA here onAlreadySynchronized"); 
           loadGameScene(); 
          } 

          @Override 
          public void onDataUploadedToCloud() { 
           // TODO Auto-generated method stub 
           super.onDataUploadedToCloud(); 
           System.out 
             .println("FA here onDataUploadedToCloud"); 
          } 

          @Override 
          public void onDiskWriteComplete() { 
           // TODO Auto-generated method stub 
           super.onDiskWriteComplete(); 
           System.out 
             .println("FA here onDiskWriteComplete"); 
          } 

          @Override 
          public void onFirstSynchronize() { 
           // TODO Auto-generated method stub 
           super.onFirstSynchronize(); 
           System.out 
             .println("FA here onFirstSynchronize"); 
           loadGameScene(); 
          } 

          @Override 
          public void onNewCloudData() { 
           // TODO Auto-generated method stub 
           super.onNewCloudData(); 
           System.out 
             .println("FA here onNewCloudData"); 
          } 

          @Override 
          public void onSyncFailed(FailReason reason) { 
           // TODO Auto-generated method stub 
           super.onSyncFailed(reason); 
           System.out 
             .println("FA here onSyncFailed reason: " 
               + reason.name()); 
          } 

          @Override 
          public void onThrottled() { 
           // TODO Auto-generated method stub 
           super.onThrottled(); 
           System.out.println("FA here onThrottled"); 
          } 

         }); 
     Log.i(TAG, "onResume: call initiateGetUserIdRequest"); 
     PurchasingManager.initiateGetUserIdRequest(); 

     Log.i(TAG, "onResume: call initiateItemDataRequest for skus: " 
       + LAppInfo.getInstance().getList()); 
     Set<String> skus = new HashSet<String>(LAppInfo.getInstance() 
       .getList()); 
     PurchasingManager.initiateItemDataRequest(skus); 
    } 
    CCDirector.sharedDirector().resume(); 
} 

private AmazonGamesCallback callback = new AmazonGamesCallback() { 
    @Override 
    public void onServiceNotReady(AmazonGamesStatus status) { 
     // unable to use service 
     System.out.println("FA here callback onServiceNotReady: " 
       + status.name()); 
    } 

    @Override 
    public void onServiceReady(AmazonGamesClient amazonGamesClient) { 
     System.out.println("FA here callback onServiceReady: "); 
     agsClient = amazonGamesClient; 
    } 
}; 

private void loadGameScene() { 
    LoadData(); 
    CCScene mainMenu = LevelMenuScene.scene(); 
    CCDirector.sharedDirector().replaceScene(
      CCFadeTransition.transition(0.5f, mainMenu)); 
} 

답변

0

. 속삭임 동기화의 콜백 대신 메인 스레드에서 장면을로드하는 것입니다. 어떤 사람이 적절한 해결책을 찾았는지 기꺼이 알게 될 것입니다.