Cocos2D и таблица лидеров

Я имею дело с приложением Cocos2D для iPhone с таблицей лидеров Game Center. В этом приложении пользователь должен рисовать линии в ландшафтном режиме (iPhone горизонтальный). Бывает, что касание может начаться за пределами экрана (в левой части рядом с микрофоном) и продолжиться внутри экрана. Приложение корректно начинает рисовать, как только палец входит в рамки экрана. Однако, если я покажу вид с таблицей лидеров (которая на самом деле изображена правильно) и вернусь в игру, приложение перестанет обрабатывать касания, которые начинаются за пределами экрана. На самом деле он перестает обрабатывать только те, которые начинаются в верхней части экрана, как будто вверху есть строка пикселей, которые не учитываются.

Я начал доску лидеров следующим образом:

- (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];
}
}

и отпустите его следующим образом:

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

[tempVC release];


}

person Andrea Sindico    schedule 23.02.2012    source источник


Ответы (1)


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

У меня есть игра Cocos2d с интегрированными таблицами лидеров, и сенсоры работают отлично, поэтому позвольте мне рассказать вам подробности о том, как я добавляю viewController таблицы лидеров, и вы можете попробовать это:

Примечание.Как правило, лучше использовать элементы UIKit в cocos2d с помощью RootViewController, добавленного в версии 0.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];
}

Где rootVC находится в AppDelegate.h:

    RootViewController  *viewController;
person Mazyod    schedule 01.03.2012
comment
На самом деле у меня нет свойства viewControllery в моем AppDelegate. - person Andrea Sindico; 01.03.2012
comment
Значит, вы используете устаревшую версию cocos2d. Из личного опыта, версии до 0.99.5 глючат и имеют много нестабильностей. Обновитесь до версии 1.0.1, и, скорее всего, ваша проблема будет решена. - person Mazyod; 01.03.2012
comment
На самом деле я начал с версии до 0.99, но теперь я использую версию 1.0.1. Однако AppDelegate по-прежнему не показывает никакого rootViewController :(? Где я должен проверить? - person Andrea Sindico; 01.03.2012
comment
Похоже, вы обновили только библиотеку cocos2d, а не проект шаблона. - person erkanyildiz; 01.03.2012
comment
мда, это возможно. как мне это сделать? - person Andrea Sindico; 02.03.2012
comment
В загрузке cocos2d должен быть файл: install-templates.sh. Это установит шаблоны. Как именно? См.: cocos2d-iphone.org/archives/1412. - person Mazyod; 02.03.2012
comment
Если вы считаете, что шаблоны уже установлены, вы также можете создать образец приложения cocos2d и убедиться, что ваш проект настроен так же, как и сейчас. В новом проекте должен быть файл rootViewController. - person slycrel; 03.03.2012
comment
Если шаблоны уже установлены, запустите sudo install-templates.sh -f, и это приведет к принудительной переустановке шаблонов. - person EmilioPelaez; 03.03.2012