2012-02-23 20 views
5

Tôi đang xử lý ứng dụng iPhone Cocos2D với Bảng xếp hạng của Trung tâm trò chơi. Trong ứng dụng này, người dùng phải vẽ đường trong chế độ ngang (iPhone nằm ngang). Nó xảy ra sau đó các liên lạc có thể bắt đầu bên ngoài màn hình (ở phía bên trái gần micro) và tiếp tục bên trong màn hình. Ứng dụng bắt đầu vẽ chính xác ngay khi ngón tay vào trong khung màn hình. Tuy nhiên, nếu tôi hiển thị chế độ xem với hình chữ nhật dài (được mô tả chính xác) và tôi quay lại trò chơi, ứng dụng sẽ ngừng xử lý các lần chạm bắt đầu bên ngoài màn hình. Nó thực sự ngừng xử lý chỉ những người bắt đầu trên đầu màn hình như thể có một dòng pixel ở trên cùng mà không được xem xét.Cocos2D & Leaderboard

tôi bắt đầu các nhà lãnh đạo hội đồng quản trị theo cách này:

- (void) showLeaderboard 
{ 
    GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init]; 
if (leaderboardController != nil){ 
    tempVC=[[UIViewController alloc] init] ; 
    leaderboardController.leaderboardDelegate = self; 
    [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view]; 

    [tempVC presentModalViewController:leaderboardController animated:YES]; 
    tempVC.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(0.0f)); 
    tempVC.view.bounds = CGRectMake(0, 0, 480, 320); 
    tempVC.view.center = CGPointMake(240, 160); 

    [leaderboardController release]; 
} 
} 

và phát hành nó theo cách này:

-(void) leaderboardViewControllerDidFinish: (GKLeaderboardViewController *) viewController{ 
[tempVC dismissModalViewControllerAnimated:YES]; 
[tempVC.view.superview removeFromSuperview]; 
[tempVC.view removeFromSuperview]; 

[tempVC release]; 


} 

Trả lời

1

Vâng, vấn đề của bạn có vẻ hơi khó chịu, và tất cả tôi có thể cung cấp là một đoán để nơi mà vấn đề có thể là ..

Tôi có một trò chơi Cocos2d với Leaderboards tích hợp, và các chạm đang hoạt động hoàn hảo, vì vậy hãy để tôi cung cấp cho bạn chi tiết về cách tôi thêm chế độ xem bảng thành tích ler và bạn có thể muốn dùng thử:

Lưu ý:Thường tốt hơn nên sử dụng các phần tử UIKit trong cocos2d bằng RootViewController, được thêm vào v0.99.5.

//Action method invoked upon pressing the "Show LeaderBoards button" 
-(void)showLeaderboardButtonClicked { 
    [gameCenterHandler showLeaderboard]; 
} 

//Inside the GameCenter Handler: 
-(void) showLeaderboard { 
    if (isGameCenterAvailable == NO) { 
     return; 
    } else if (![[GKLocalPlayer localPlayer] isAuthenticated]) { 
     [self authenticateLocalPlayer]; 
    } else { 
     GKLeaderboardViewController* leaderboardVC = [[[GKLeaderboardViewController alloc] init] autorelease]; 
     if (leaderboardVC != nil) { 
      leaderboardVC.leaderboardDelegate = self; 
      [rootVC presentModalViewController:leaderboardVC animated:YES]; 
     } 
} 

-(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController*)viewController { 
    [rootVC dismissModalViewControllerAnimated:YES]; 
} 

đâu rootVC là trong AppDelegate.h:

RootViewController *viewController; 
+0

Tôi thực sự không có tài sản viewControllery trong appdelegate tôi – Sindico

+0

Sau đó, bạn đang sử dụng một phiên bản cũ của cocos2d. Từ trải nghiệm cá nhân, các phiên bản trước 0,99,5 bị lỗi và có nhiều bất ổn. Cập nhật lên v1.0.1 và có một cơ hội lớn vấn đề của bạn sẽ được giải quyết – Mazyod

+0

Tôi thực sự đã bắt đầu với phiên bản trước 0,99 nhưng bây giờ tôi đang sử dụng phiên bản 1.0.1. Tuy nhiên AppDelegate vẫn không hiển thị bất kỳ rootViewController: (? Tôi nên kiểm tra ở đâu? – Sindico