2016-02-05 2 views
0

Я пробовал сделать игру в cocos 2dx. Он отлично работает в ландшафтном режиме. Я даже проверил его на разных устройствах. Но когда я переключаюсь в портретный режим, спрайты и узлы в каждой сцене находятся в разных положениях, а некоторые даже не видны. Я устанавливаю все относительно ширины и высоты экрана. Например:Cocos 2dx Портретный режим Объекты Местоположения перепутаны

backgroundSprite->setPosition(Point(visibleSize.width/2 +origin.x , visibleSize.height/2 +origin.y)); 

Plus для перехода в портретный режим, на Xcode, я нажал на имени проекта, пошли на вкладку общего и изменяется от ландшафта слева и справа Пейзаж Портрет. Когда я пытался изменить в портретном режиме в методе на странице cocos.org основном редактирование RootViewController.mm замены

return UIInterfaceOrientationMaskAllButUpsideDown; 

с

return UIInterfaceOrientationMaskPortrait; 

Xcode симулятор еще разбился и дал мне эту ошибку

2016-02-05 07:59:25.490 CircleGame-mobile[3192:39201] *** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [RootViewController shouldAutorotate] is returning YES' 
*** First throw call stack: 
(
    0 CoreFoundation      0x0000000110116e65 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x000000010fae8deb objc_exception_throw + 48 
    2 CoreFoundation      0x0000000110116d9d +[NSException raise:format:] + 205 
    3 UIKit        0x000000010db8f52b -[UIViewController __supportedInterfaceOrientations] + 903 
    4 UIKit        0x000000010db7dcd7 -[UIViewController _preferredInterfaceOrientationGivenStatusBarAndDeviceAndOrientation:] + 90 
    5 UIKit        0x000000010da4854c -[UIWindow setRootViewController:] + 111 
    6 CircleGame-mobile     0x000000010c3d8563 -[AppController application:didFinishLaunchingWithOptions:] + 883 
    7 UIKit        0x000000010d9d11f1 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 272 
    8 UIKit        0x000000010d9d2397 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3415 
    9 UIKit        0x000000010d9d8cc6 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1760 
    10 UIKit        0x000000010d9d5e7b -[UIApplication workspaceDidEndTransaction:] + 188 
    11 FrontBoardServices     0x0000000112673754 -[FBSSerialQueue _performNext] + 192 
    12 FrontBoardServices     0x0000000112673ac2 -[FBSSerialQueue _performNextFromRunLoopSource] + 45 
    13 CoreFoundation      0x0000000110042a31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    14 CoreFoundation      0x000000011003895c __CFRunLoopDoSources0 + 556 
    15 CoreFoundation      0x0000000110037e13 __CFRunLoopRun + 867 
    16 CoreFoundation      0x0000000110037828 CFRunLoopRunSpecific + 488 
    17 UIKit        0x000000010d9d57cd -[UIApplication _run] + 402 
    18 UIKit        0x000000010d9da610 UIApplicationMain + 171 
    19 CircleGame-mobile     0x000000010c3ec934 main + 100 
    20 libdyld.dylib      0x00000001105fa92d start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

ответ

1

У меня есть приложение в портретном режиме.

1) в общих настройках необходимо снять отметку с пейзажа и оставить только портрет.

2) в info.plist «Поддерживаемые ориентации интерфейса» у вас должен быть портрет (нижняя кнопка дома).

3) in AppController.mm in supportedInterfaceOrientationsForWindow возвращает только UIInterfaceOrientationMaskPortrait.

4) также в приложении AppDelegate.cpp в приложенииDidFinishLaunching: не забудьте использовать setDesignResolutionSize с портретными размерами, например 960x640.

+0

Он все еще не работает. Я пробовал внесенные вами изменения, за исключением того, что я отредактировал RootViewControler.mm вместо AppController.mm. Ошибка больше не приходит, но объекты все еще не выровнены. –

+1

Должно быть, это работает, потому что я получил их из игры, сделанной на портрете. Ну, так как вы загружаете свою сцену? Вы загружаете его из Cocos Studio или, скорее всего, из кода? Сначала вы должны попробовать его в пустом проекте, а затем просто скопировать первую сцену, и вы должны выяснить, в чем проблема. – Makalele

+0

Я сделал то, что вы мне сказали, и понял проблему. В моем родительском контейнере возникла проблема с привязкой. Спасибо. Я работаю. –

Смежные вопросы