2015-10-20 5 views
4

У нас есть база кода, которая была написана и выпущена в 2013 году, но в iOS 9 приложение перестает меняться между SKScene, когда сообщение presentScene:transition: отправлено на наш SKView. SKScene принимает сообщение didMoveToView:, но сама сцена никогда не отображается на экране.SpriteKit SKView перестает переходить между сценами в iOS 9

Вот что мы пробовали:

  • Отключение Metal через Info.plist
  • Использование [SKTransition transitionWithCIFilter:duration:] вместо предопределенных анимации
  • Tweaking zPosition
  • Переключение на регулярные UIView анимации (это сделали наши SKNode s исчезают)
  • Убедитесь, что транси Метод Тиона не дозвонился более чем один раз
  • Явных установок pausesOutgoingScene в YES на SKTransition

Ни один из вышеупомянутых попыток исправила проблему. Обратите внимание, что все переходы правильно в прошивкой 8

Ниже приведен пример кода, который не работает:

-(BOOL)presentTitle { 
    if (!titleSceneLoaded) { 
     return NO; 
    } 
    [skView presentScene:titleScene transition:[SKTransition fadeWithDuration:1.0]]; 
    return YES; 
} 

Изменение его это делает его работу еще раз (без переходов):

-(BOOL)presentTitle { 
    if (!titleSceneLoaded) { 
     return NO; 
    } 
    [skView presentScene:titleScene]; 
    return YES; 
} 

Любые предложения о том, как найти/исправить/устранить ошибку?

+1

Можете ли вы обновить свой вопрос кодом, используемым для перехода? Кроме того, «не переходя», вы имеете в виду, что вы получаете ошибки или ничего не происходит вообще? Вы уверены, что код выполняется вообще? – Whirlwind

+0

@Whirlwind спасибо за комментарий, я обновил вопрос с этими подробностями. Код определенно выполнен (проверен через точку останова). –

+0

Ну его определенно странно, потому что его не происходит на iOS8 ...Но это необязательно должно быть ошибкой ... Вы пытались установить fadeWithDuration на более высокое значение, скажем 5 и посмотреть, работает ли это так? Согласно этому сообщению http://stackoverflow.com/a/24016057/3402095, если сцена (TitleScene в вашем случае) ресурс тяжелый, часть перехода может быть пропущена ... – Whirlwind

ответ

1

Мы не смогли получить SKTransition для работы. Мы поговорили с командой поддержки разработчиков, размещенной на форумах разработчиков, и попробовали все, что было опубликовано здесь.

Это ошибка SpriteKit исключительно для iOS 9. Если кто-то еще сталкивается с этой ошибкой на iOS 9, мы переключились на пользовательские переходы, используя UIView animateWithDuration:animations:completion:.

2

В iOS9 есть ошибка с представлением сцены с переходом в подвью.

Я была такая же проблема и в моем контроллере я был в состоянии решить проблему, изменив следующий код в viewWillLayoutSubviews от этого:

 [self.subview presentScene:self.scene]; 
     [self.view addSubview:self.subview]; 

к этому:

 [((SKView *)self.view) presentScene:self.scene]; 

Другое решение, если сцена должна оставаться в подвидном подходе - использовать presentScene без перехода, что действительно работает.

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