 |
iPhone Разработка игр на Objective-C |
23.07.2011, 22:30
|
#1
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
iAd и iXors3D
Пытался встроить рекламу iAd в игру на основе iXors3D.
И потерпел жестокий фэйл. В мануалах сказано что баннер iAd требует себе в качестве контейнера UIViewController или любой его производный. Существующие производные подходят только для приложений. Для игр нет.
Ситуацию осложняет то что iXors3D базируется на GLView и нетребует вообще никаких контроллеров. Причём само GLView создаёт в окне сам.
Благодаря чему, мы неможем взять и запихать это GLView в контейнер UIViewController нападу с банером iAd.
Ещё кто-нибудь пробывал подружить сабжи?
__________________
|
(Offline)
|
|
24.07.2011, 02:07
|
#2
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: iAd и iXors3D
Там не GLView, а UIView. И вроде как с ним можно подружить iAd.
Я пока унылый нуб в этом деле, но http://www.raywenderlich.com/1371/ho...our-iphone-app тут вроде как именно этот процесс и описывается.
__________________
|
(Offline)
|
|
24.07.2011, 15:08
|
#3
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: iAd и iXors3D
Есть кое-какие продвижения:
1. Написал свой класс-наследник UIViewController
2. Перенес создание xGLView ксорса в инициализацию своего контроллера, в которой контроллер создаваясь добавляет себя к окну. Далее создаёт xGLView ксорса и цепляет его к себе. Потом создаёт UIBannerView рекламы и цепляет к себе.
3. Создал реакции на события поворота устройства.
В результате, окно ксорса с игрой, над ним вью баннера.
Возникли проблемы с ландшафтным режимом. Т.к. изначально все вью в айФонах портретные, вью ксорса повернут на 90 градусов и частично невиден.
Применил трансформации поворота и сдвига, стало как надо.
Возникла проблема с вводом, при перевернутом экране ввод остаётся на прежнем месте, т.е. нет синхронизации между изображением и координатами ввода для окна ксорса. подозреваю что это делает сам ксорс.
З.Ы. вращение экрана средствами ксорса надо отключать иначе будет неразбериха.
__________________
Последний раз редактировалось SBJoker, 24.07.2011 в 19:16.
|
(Offline)
|
|
24.07.2011, 18:57
|
#4
|
Оператор ЭВМ
Регистрация: 26.05.2009
Сообщений: 36
Написано 13 полезных сообщений (для 65 пользователей)
|
Ответ: iAd и iXors3D
кстати, а попутный вопрос:
кто-нить разобрался с интеграцией Game Center? В частности, с показом окон лидербордов и ачивментов? У меня получилось сделать только через отдельный вьюконтроллер, а сабвью с ксорсом просто прятать. Может, кто знает способ более прямой?
|
(Offline)
|
|
24.07.2011, 19:14
|
#5
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: iAd и iXors3D
Я просто перед показом Лидборда нахожу сабвью с нулевым индексом и делаю его верхним. Это всегда оказывается свежедобавленый сабвью, что нам и нужно.
Как то так:
- (IBAction)showLeaderboard
{
GKLeaderboardViewController *lb = [[GKLeaderboardViewController alloc] init];
if (lb != nil) {
lb.leaderboardDelegate = self;
[self presentModalViewController:lb animated: NO];
NSArray * subviews = [[[UIApplication sharedApplication] keyWindow] subviews];
UIView * vLayer= [subviews objectAtIndex: 0];
vLayer.hidden=false;
[[[UIApplication sharedApplication] keyWindow] bringSubviewToFront: vLayer];
}
}
__________________
|
(Offline)
|
|
26.08.2011, 02:06
|
#6
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Ответ: iAd и iXors3D
Джокер, а зачем вручную искать сабвью? Когда ты вызываешь presentModalViewController, то новый контроллер по умолчанию занимает своим вью весь экран и рендерится поверх других вью, на то он и модальный.
|
(Offline)
|
|
26.08.2011, 02:17
|
#7
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: iAd и iXors3D
Наверное по другому не работает.
__________________
|
(Offline)
|
|
26.08.2011, 02:37
|
#8
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Ответ: iAd и iXors3D
Я впервые вижу такой хак. Для игр самое оптимальное иметь один вью контроллер, которому в качестве вью задается твой GLView. Это возможно, т.к. любой кастомный вью все равно наследует от UIView. Таким образом, то что в нем рендерится игра, не имеет никакого значения. С точки зрения иерархии, он является обычным вью без детей.
Поверх него можно показывать любой другой вью, в том числе айадс, любой модальный вью контроллер, алерт вью и так далее.
Если сходу не работает, видимо Xors что-то химичит с иерархией, в духе приведенного тобой фрагмента кода.
|
(Offline)
|
|
27.08.2011, 01:37
|
#9
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: iAd и iXors3D
Тред не читай - сразу отвечай!
Ксорс не юзает ВьюКонтроллер, в этом вся и проблема. Собственно что мы и обсуждали всю тему.
__________________
|
(Offline)
|
|
06.10.2011, 15:27
|
#10
|
Оператор ЭВМ
Регистрация: 26.05.2009
Сообщений: 36
Написано 13 полезных сообщений (для 65 пользователей)
|
Ответ: iAd и iXors3D
Сообщение от SBJoker
2. Перенес создание xGLView ксорса в инициализацию своего контроллера, в которой контроллер создаваясь добавляет себя к окну. Далее создаёт xGLView ксорса и цепляет его к себе. Потом создаёт UIBannerView рекламы и цепляет к себе.
|
Сейчас занимаюсь тем же, интегою iAds. Пошел по такому же пути.
Но столнулся с траблой - если поверх слоя ксорса показывать слой с баннером, ксорс, разумеется, перестает реагировать на нажатие экрана, так как управление перехватывает вьюконтроллер с баннером. Как ты эту ситуевину разрулил? Мне в голову ничего умнее переноса кнопок и др. элементов управления на слой с баннером не пришло.
|
(Offline)
|
|
06.10.2011, 15:41
|
#11
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: iAd и iXors3D
Как я написал выше, вьюконтроллер для этого у ксорса и баннера должен быть общим.
В этом случае баннер будет перехватывать управление только в занимаемой им зоне.
__________________
|
(Offline)
|
|
06.10.2011, 17:17
|
#12
|
Оператор ЭВМ
Регистрация: 26.05.2009
Сообщений: 36
Написано 13 полезных сообщений (для 65 пользователей)
|
Ответ: iAd и iXors3D
вроде получилось. просто надо было еще вью ксорса не просто запускать, но еще прилепить его как сабвью.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:30.
|