Проблема с cocos2d и UINavigationController - PullRequest
5 голосов
/ 15 декабря 2010

Я работаю над приложением, в котором я хотел бы использовать cocos2d на главном экране приложения, но не в другом месте (в других местах стандартный материал UIKit более уместен). Итак, мой EAGLView настроен в качестве корневого представления в UINavigationController, и когда пользователь нажимает в нужном месте, я помещаю новый контроллер представления в навигационный контроллер.

Пока все отлично работает. Материал cocos2d / chipmunk на домашнем экране работает отлично, поэтому новый контроллер представления работает, как и ожидалось.

Но когда я возвращаюсь к исходному виду, там ничего нет. Все, что я вижу, это фон окна и панель навигации.

Я установил точку останова в -viewDidAppear контроллера корневого представления: чтобы увидеть, что происходит после всплывающего окна, и пока все выглядит нормально (или, по крайней мере, так же, как это было до нажатия).

Push - это просто стандартное нажатие навигационного контроллера. Я не вижу каких-либо предупреждений памяти. У кого-нибудь есть мысли о том, что происходит?

Есть простой демонстрационный проект, который показывает это поведение на http://cl.ly/1Q050s0h2k47032K1Y1N

Это основано на шаблоне проекта cocos2d + chipmunk. Нажмите на Grossini и новый контроллер представления помещается в стек. Нажмите кнопку «Назад», и Гроссини исчезнет.

И просто, чтобы сделать это интересным, эта проблема существует только на устройстве iOS (я использую 4.1), а не в симуляторе.

1 Ответ

6 голосов
/ 18 декабря 2010

Я решил вашу проблему.Вы должны выполнить некоторые шаги в своем коде.

В файле пера RootViewController измените Идентичность представления с HomeView на UIView.

Создайте объект Home View в классе RootViewController

@interface RootViewController : UIViewController {
    HomeView *homeViewObj;
}

в файле RootViewController.m в методе ViewDidLoad добавьте этот код

homeViewObj = [[HomeView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:homeViewObj];

и замените этот код в методе ViewDidLoad в необходимом месте.

CCDirector *director = [CCDirector sharedDirector];

    // attach the openglView to the director
    [director setOpenGLView:(EAGLView *)homeViewObj];

    [director setDeviceOrientation:kCCDeviceOrientationPortrait];
    [director setAnimationInterval:1.0/60];
    [director setDisplayFPS:YES];

Тогда проблема будет решенаВсего наилучшего.

С уважением,

Сатья

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...