Cocos 2d и Game Center (выпуск таблицы лидеров) - PullRequest
6 голосов
/ 01 ноября 2010

Я не могу найти свой ответ после просмотра (не много тем на cocos2d с игровым центром)

В настоящее время у меня настроен игровой центр с песочницей, и я могу проходить аутентификацию, но когда я создаю таблицу лидеров, она запускается сбоку в портретной ориентации. Пробовал вращать вид но ничего. Моя игра работает только в ландшафтном режиме. Я бегу бета 3 0.99.5. Вот мой код для справки.

tempVC = [[RootViewController alloc] init];

GKLeaderboardViewController *leaderboardController = [[[GKLeaderboardViewController alloc] init] autorelease];

if (leaderboardController != nil)
{
    leaderboardController.leaderboardDelegate = self;
    [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
    [tempVC presentModalViewController:leaderboardController animated:YES];
}

Действительно буду признателен за любую помощь. Получение ответа от доски cocos2d.

EDIT:

Исправлено путем изменения автоматического поворота на CCDirector. Кроме того, у меня возникли проблемы с потерей функции multi-touch после показа игрового центра. Увольнение за доску следует использовать так:

[tempVC dismissModalViewControllerAnimated:YES];
[tempVC.view.superview removeFromSuperview];

Ответы [ 8 ]

2 голосов
/ 07 ноября 2011

Исправлено путем изменения автоповорота на CCDirector. Кроме того, у меня возникли проблемы с потерей функции multi-touch после показа игрового центра. Увольнение за доску следует использовать так:

[tempVC dismissModalViewControllerAnimated:YES];
[tempVC.view.superview removeFromSuperview];
2 голосов
/ 22 февраля 2011

= У меня была эта проблема, и я несколько дней рвал на себе волосы, но в итоге заставил ее работать идеально в ландшафтном режиме, независимо от того, как пользователь держит телефон. Это немного странно, и если кто-то знает, пожалуйста, дайте мне знать!

1 - мне нужно иметь представление (контроллера, который вызывает таблицу лидеров) в портретной ориентации, в моем случае это сделано в IB

2 - работает, только если вы поддерживаете портретную ориентацию (даже если она выглядит как пейзаж) -

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

3 - Затем вам нужно изменить размер и повернуть таблицу лидеров -

[self presentModalViewController: leaderboardController animated: YES];

leaderboardController.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(0.0f));
leaderboardController.view.bounds = CGRectMake(0, 0, 480, 320);
leaderboardController.view.center = CGPointMake(240, 160);

4 - Привет, Престо! Работает нормально. Надеюсь, что это работает и для вас.

1 голос
/ 10 июня 2013

Правильно было реализовать и включить эту категорию:

.h

#import <GameKit/GameKit.h>

@interface GKLeaderboardViewController (additions)
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation;
-(NSUInteger)supportedInterfaceOrientations;
@end

.m

#import "GKLeaderboardViewController+additions.h"

@implementation GKLeaderboardViewController (additions)
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}
@end
1 голос
/ 20 апреля 2012

Используя это на cocos2d v1.0.1, последней стабильной версии от 19 апреля 2012 года, это фактически не позволяет vc исчезать анимированным. Вероятно, вместо этого выполняется:

[tempVC dismissModalViewControllerAnimated:YES];
[[[tempVC view] superview] performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.2];
[tempVC performSelector:@selector(release) withObject:nil afterDelay:1.3];
1 голос
/ 27 марта 2012

, если это может помочь, я обнаружил, что простого удаления GKLeaderboard из суперпредставления недостаточно, поэтому после использования

[tempVC.view.superview removeFromSuperview];

youтакже следует использовать

[tempVC release];

Без этого GKLeaderboardViewController делает некоторые странные вещи, например, после второго вызова он не поворачивается автоматически в представлении.

Надеюсь, это поможет

0 голосов
/ 26 сентября 2012

Как только у меня возникла такая же проблема, я перешел на блог Коннора Денмана, который работает для меня. Вот ссылка
http://connordenman.com/post/15554858770/presenting-a-modal-view-controller-in-cocos2d-iphone

0 голосов
/ 07 ноября 2010

У меня была та же проблема с запуском GC в портретной на iPad, когда моя игра Cocos2D была в альбомной ориентации. Исправлено это путем получения моего контроллера GameKit из rootViewController вместо UIViewController.

@ interface GCController: RootViewController {

0 голосов
/ 01 ноября 2010

GKLeaderboardViewController используется для отображения таблицы лидеров по умолчанию, которая представляет собой только портретное представление. Чтобы отобразить альбом лидеров в альбомной ориентации, вы должны реализовать свой собственный вид таблицы лидеров.

Редактировать: С момента первоначального написания этого, GKLeaderboardViewController был улучшен для работы просто отлично в любой ориентации.

...