#cocos2d-iphone
#cocos2d-iphone
Вопрос:
Я хочу использовать камеру в качестве фона для своей игры, она работает нормально, когда я помещаю код в AppDelegate.m, но когда я запускаю игру, она отображается на каждой странице, когда я просматриваю ее, появляется на секунду, а затем фоновая обложка остается такой же, но я хочу показывать только на одном экране, который находится вмой игровой экран, а не экран меню.когда я помещаю код в этот файл слоя, он не работает.Для этого я использую приведенный ниже код:
Добавьте это в AppDelegate.h
UIView *overlay;
Add this in appDelegate.m
EAGLView *glView = [EAGLView viewWithFrame:[window bounds]
pixelFormat:kEAGLColorFormatRGBA8 depthFormat:0];
Below the [window addSubview: viewController.view]; line of code we will add the following lines of code:
// set the background color of the view
[CCDirector sharedDirector].openGLView.backgroundColor = [UIColor clearColor];
[CCDirector sharedDirector].openGLView.opaque = NO;
// set value for glClearColor
glClearColor(0.0, 0.0, 0.0, 0.0);
// prepare the overlay view and add it to the window
overlay = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
overlay.opaque = NO;
overlay.backgroundColor=[UIColor clearColor];
[window addSubview:overlay];
Next add the following code below the code you just added.
#define CAMERA_TRANSFORM 1.24299
UIImagePickerController *uip;
@try {
uip = [[[UIImagePickerController alloc] init] autorelease];
uip.sourceType = UIImagePickerControllerSourceTypeCamera;
uip.showsCameraControls = NO;
uip.toolbarHidden = YES;
uip.navigationBarHidden = YES;
uip.wantsFullScreenLayout = YES;
uip.cameraViewTransform = CGAffineTransformScale(uip.cameraViewTransform,
CAMERA_TRANSFORM, CAMERA_TRANSFORM);
}
@catch (NSException * e) {
[uip release];
uip = nil;
}
@finally {
if(uip) {
[overlay addSubview:[uip view]];
[overlay release];
}
}
[window bringSubviewToFront:viewController.view];
Пожалуйста, помогите выяснить, где я могу поместить этот код в xxxxxxxx.m, чтобы он работал только для файла xxxxxxxx.m.
Спасибо, Гаурав
Ответ №1:
Сделайте наложение свойством класса делегата приложения.
Доступ к наложенному виду из любого места:
YourAppDelegate* appDelegate = (YourAppDelegate*)
[[UIApplication sharedApplication] delegate];
UIView* overlay = appDelegate.overlay;
// add the UIImagePickerController code here …
Всякий раз, когда вы хотите отключить вид с камеры, скройте вид наложения:
overlay.hidden = YES;