#iphone #cocos2d-iphone
#iPhone #cocos2d-iphone
Вопрос:
Я играю в игру, когда игрок проигрывает, и появляется экран завершения игры. Но моя игра поверх экрана находится в UIViewController. Я вызываю это в своем директоре, и все в порядке.
Экран завершения игры выглядит как наложение в игре
Но я использую пользовательские шрифты, и в моей игре поверх экрана я хочу использовать это. Но как я мог использовать только «CCLabelBMFont» в Game Over.
Я думаю, что способ (не лучший). Это то, что вы печатаете с большим z-индексом, чем игра, поверх текста, который я хочу, с помощью «CCLabelBMFont». Но я хочу, чтобы все содержимое Game Over было в GameOver.m
Что я мог сделать? Спасибо всем.
Комментарии:
1. Если вы собираетесь отметить его, было бы вежливо оставить комментарий, чтобы он знал, почему.
Ответ №1:
Чтобы представить что-либо из Cocos2D поверх представления UIKit, вам придется сделать представление Cocos2D прозрачным и ввести фиктивный вид. Вы не можете достичь этого эффекта с помощью порядка z, потому что это влияет только на узлы в представлении Cocos2D OpenGL.
Чтобы сделать вид Cocos2D прозрачным, вам нужно изменить глубину цвета на 32 бита (RGBA8888) из 16-битного режима по умолчанию в инициализации EAGLView (делегирование приложения). Затем настройте иерархию представлений с помощью фиктивного представления, чтобы вы могли фактически добавлять представления UIKit в фоновом режиме и представление Cocos2D в качестве основного представления.
Основной подход заключается в том, чтобы сделать это в методе делегирования вашего приложения didFinishLaunching:
UIView* dummyView = [[UIView alloc] initWithFrame:[window bounds]];
[dummyView autorelease];
[dummyView addSubview:[CCDirector sharedDirector].openGLView];
rootViewController.view = dummyView;
[window addSubview:rootViewController.view];
// make the cocos2d view transparent:
glClearColor(0.0, 0.0, 0.0, 0.0);
[[CCDirector sharedDirector] openGLView].opaque = NO;
С этого момента вы можете использовать dummyView для управления иерархией представлений. Например, когда вы добавляете свою игру поверх представления в dummyView, вы хотите вызвать для нее SendToBack, чтобы она отображалась за представлением cocos2d.
Весь процесс со всеми нюансами, которые следует учитывать, подробно описан в моей книге по разработке игр Learn Cocos2D (2-е издание).
Комментарии:
1. Да, я так думаю, но моя проблема в том, что игра основана на CCDirector, а затем я добавляю игру поверх экрана и внутри класса Game Over я хочу добавить CCLabelBMFont. Я знаю, что мог бы добавить метку в игру с z больше, чем в Game Over. Но я хочу все это организовать и получить все в классе Game Over