Как использовать вид камеры в качестве фона только во внутреннем слое - PullRequest
1 голос
/ 01 ноября 2011

Я хочу использовать камеру в качестве фона игры, она работает нормально, когда я помещаю код в 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 Ответ

1 голос
/ 01 ноября 2011

Сделать наложение свойством класса делегата приложения.

Доступ к представлению наложения из любого места:

YourAppDelegate* appDelegate = (YourAppDelegate*)
                                  [[UIApplication sharedApplication] delegate];
UIView* overlay = appDelegate.overlay;
// add the UIImagePickerController code here …

Когда вы хотите отключить представление камеры, скрывайте представление наложения:

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