iAd и iXors3D
Пытался встроить рекламу iAd в игру на основе iXors3D.
И потерпел жестокий фэйл. В мануалах сказано что баннер iAd требует себе в качестве контейнера UIViewController или любой его производный. Существующие производные подходят только для приложений. Для игр нет. Ситуацию осложняет то что iXors3D базируется на GLView и нетребует вообще никаких контроллеров. Причём само GLView создаёт в окне сам. Благодаря чему, мы неможем взять и запихать это GLView в контейнер UIViewController нападу с банером iAd. Ещё кто-нибудь пробывал подружить сабжи? |
Ответ: iAd и iXors3D
Там не GLView, а UIView. И вроде как с ним можно подружить iAd.
Я пока унылый нуб в этом деле, но http://www.raywenderlich.com/1371/ho...our-iphone-app тут вроде как именно этот процесс и описывается. |
Ответ: iAd и iXors3D
Есть кое-какие продвижения:
1. Написал свой класс-наследник UIViewController 2. Перенес создание xGLView ксорса в инициализацию своего контроллера, в которой контроллер создаваясь добавляет себя к окну. Далее создаёт xGLView ксорса и цепляет его к себе. Потом создаёт UIBannerView рекламы и цепляет к себе. 3. Создал реакции на события поворота устройства. В результате, окно ксорса с игрой, над ним вью баннера. Возникли проблемы с ландшафтным режимом. Т.к. изначально все вью в айФонах портретные, вью ксорса повернут на 90 градусов и частично невиден. Применил трансформации поворота и сдвига, стало как надо. Возникла проблема с вводом, при перевернутом экране ввод остаётся на прежнем месте, т.е. нет синхронизации между изображением и координатами ввода для окна ксорса. подозреваю что это делает сам ксорс. З.Ы. вращение экрана средствами ксорса надо отключать иначе будет неразбериха. |
Ответ: iAd и iXors3D
кстати, а попутный вопрос:
кто-нить разобрался с интеграцией Game Center? В частности, с показом окон лидербордов и ачивментов? У меня получилось сделать только через отдельный вьюконтроллер, а сабвью с ксорсом просто прятать. Может, кто знает способ более прямой? |
Ответ: iAd и iXors3D
Я просто перед показом Лидборда нахожу сабвью с нулевым индексом и делаю его верхним. Это всегда оказывается свежедобавленый сабвью, что нам и нужно.
Как то так: Код:
- (IBAction)showLeaderboard |
Ответ: iAd и iXors3D
Джокер, а зачем вручную искать сабвью? Когда ты вызываешь presentModalViewController, то новый контроллер по умолчанию занимает своим вью весь экран и рендерится поверх других вью, на то он и модальный.
|
Ответ: iAd и iXors3D
Наверное по другому не работает.
|
Ответ: iAd и iXors3D
Я впервые вижу такой хак. Для игр самое оптимальное иметь один вью контроллер, которому в качестве вью задается твой GLView. Это возможно, т.к. любой кастомный вью все равно наследует от UIView. Таким образом, то что в нем рендерится игра, не имеет никакого значения. С точки зрения иерархии, он является обычным вью без детей.
Поверх него можно показывать любой другой вью, в том числе айадс, любой модальный вью контроллер, алерт вью и так далее. Если сходу не работает, видимо Xors что-то химичит с иерархией, в духе приведенного тобой фрагмента кода. |
Ответ: iAd и iXors3D
Тред не читай - сразу отвечай!
Ксорс не юзает ВьюКонтроллер, в этом вся и проблема. Собственно что мы и обсуждали всю тему. |
Ответ: iAd и iXors3D
Цитата:
Но столнулся с траблой - если поверх слоя ксорса показывать слой с баннером, ксорс, разумеется, перестает реагировать на нажатие экрана, так как управление перехватывает вьюконтроллер с баннером. Как ты эту ситуевину разрулил? Мне в голову ничего умнее переноса кнопок и др. элементов управления на слой с баннером не пришло. |
Ответ: iAd и iXors3D
Как я написал выше, вьюконтроллер для этого у ксорса и баннера должен быть общим.
В этом случае баннер будет перехватывать управление только в занимаемой им зоне. |
Ответ: iAd и iXors3D
вроде получилось. просто надо было еще вью ксорса не просто запускать, но еще прилепить его как сабвью.
|
Часовой пояс GMT +4, время: 10:37. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot