Как заменить сцену RootViewController? - PullRequest
1 голос
/ 31 марта 2011

Здесь я снова с вопросом о cocos2d, пожалуйста, помогите мне. У меня есть игровая установка, в которой у меня есть 6-7 различных сцен, и одна из сцен имеет RootViewController, где я использую основной графический фонд и делаю рисование линий точно так же (приложение GLPaint, предоставленное в библиотеке iOS). переходя от одной сцены к другой с [[CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration: 3 сцены: [_ _ _ _ _ _ _ _ _ _]]];

Теперь, что я должен написать в пустом пространстве? Сцена, которую я заменяю, содержит RootViewController, поэтому, пожалуйста, помогите мне с этим.

1 Ответ

1 голос
/ 31 марта 2011

Хотите ли вы перейти к или из вашей сцены, которая является RootViewController, я не думаю, что вы сможете использовать Cocos2D переходы на ней.Я предполагаю, что вы захотите применить плавный переход к представлению вашего RootViewController, но вам нужно будет использовать UIKit, возможно, CoreAnimation для этого.Насколько мне известно, Cocos2D может использовать переходы Cocos2D только для спрайтов, слоев и т. Д. В основном все, что является потомком базового класса CCNode.UIKit - это вообще отдельное пространство.

Это не значит, что вы не можете делать то, что хотите, но я считаю, что вам нужно изменить свое представление об этой проблеме.Одно из возможных решений ...

  • Создание фиктивной сцены, в которой ничего нет
  • Когда вы хотите перейти в сцену с помощью контроллера представления, исчезните в фиктивной сцене
  • Примените базовую анимацию постепенного появления / исчезновения на контроллере представления

Это очень свободный псевдокод, но из моего опыта слияния компонентов UIKit с Cocos2D кажется хорошим местом для начала.

РЕДАКТИРОВАТЬ : Пример кода для анимации контроллера вида и сцены

Анимировать пустую сцену в Cocos2D, на которой я немного заржавел, но должно быть что-то вроде этого ...

 CCScene* dummyScene = [CCScene node];
 [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3 scene:dummyScene]];

Теперь анимируйте контроллер представления ....

[UIButton beginAnimations:nil context:NULL];
... do fade in/out, etc with your view controller ...   
[UIView commitAnimations];

Ознакомьтесь с Core Animation Guide для обзора всех различных анимаций / модификаций, которые вы можете сделать,Я забыл, как ты справляешься с этим.Я думаю, что это может быть так же просто, как изменить непрозрачность представления для вашего viewController между вызовами beginAnimations и commitAnimations.Я бы сказал, попробовать в качестве первой попытки.Вы, вероятно, захотите начать с непрозрачности 0, чтобы она была полностью невидимой, а затем перейти к 1.0, что должно сделать ее полностью непрозрачной, по крайней мере, если я правильно понимаю вещи.Вам также, вероятно, потребуется вывести viewController в начало стека представлений.Для этого есть различные методы в UIView API.

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