Янв 02

Как только из Apple пришли новости о том, что с выходом прошивки 3.0 появится возможность организовать продажу дополнительного контента непосредственно из приложения (in-app purchase) я сразу решил, что задействую эту возможность в своей программе Flower Garden. Сама идея in-app purchase хорошо вписывается в идею цветочного магазина, где виртуальные садоводы могут купить дополнительные предметы для своего сада, поэтому вопрос стоял лишь во времени, которое потребуется на реализацию. По своему личному опыту я знал, что лишь малая часть пользователей, которые однажды купили приложения, тратят деньги и на дополнительный контент. Мое приложение Flower Garden очень хорошо приняли как игроки, так и новостные сайты, однако бестселлером игра никогда не была, а значит и покупки по системе in-app purchase с самого начала предполагались небольшими.

Ситуация поменялась когда Apple позволили встраивать in-app purchase в бесплатные приложения, а Flower Garden как раз был бесплатен, поэтому аудитория пользователей удвоилась.

В состоятельности всего этого предприятия я убедился, когда подумал,  что хоть и маленький процент пользователей сделает покупки, некоторые из их числа все же могут приобрести несколько предметов, а кто-то даже и все, поэтому возможно это имеет смысл.

Сказав это, я дал себе неделю, чтобы полностью реализовать задуманное. В этот срок необходимо было произвести изменения в приложении, используя StoreKit, написать код и собственно создать новый контент для продажи. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Дек 21

В начале прошлой недели я столкнулся с одним вопросом касательно пользовательского интерфейса. Я занимался приложением, которое должно работать в горизонтальной ориентации экрана (Landscape), однако когда на экране выскакивало предупреждение (UIAlertView), вот что я видел:

alert1

Настройка горизонтальной ориентации экрана.

В своем приложении я все настроил следующим образом (файл info.plist):

infoplist Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »
\\ tags:

Авг 30

Одно из самых приятных нововведений в iPhone 3GS — более быстрая и мощная графическая платформа с поддержкой OpenGL ES 2.0. К сожалению, информации от Apple о том, как именно задействовать открывшиеся возможности, крайне мало. Практически для всех API у них есть отличная документация с образцами кодов, но проблема в том, что в случае с OpenGL примеры всегда оставляли, мягко говоря, желать лучшего.

Более того, начинающим работу с OpenGL ES 2.0 не предлагается ни базовых примеров, ни шаблона XCode. Чтобы воспользоваться расширенными графическими возможностями, придется осваивать их самостоятельно. Не стоит ошибочно полагать, что OpenGL ES 2.0 — незначительно доработанная версия OpenGL ES 1.1 с парочкой новых функций. Отличия между ними кардинальные! Конвейер с фиксированными функциями исчез, и теперь для отображения на экране обычного треугольника понадобится более глубокое знакомство с основами компьютерной графики, включая шейдеры.

Учитывая полное отсутствие документации, я решил создать самое простое приложение на iPhone с помощью OpenGL ES 2.0. Для пользователей оно вполне может стать отправной точкой при создании приложений. В качестве вариантов я рассматривал вращающийся чайник и прочие конструкции, но в итоге решил не вдаваться в детали по загрузке модели, а просто обновить приложение OpenGL ES 1.1, являющееся частью шаблона XCode. Полный итоговый код можно загрузить здесь. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
1 Комментарий »

Авг 26

Не так давно я работал над приложением, где нужно было непосредственно в нем вывести на экран карту. Я попытался найти советы по данной теме в Интернет, но ничего не вышло. Не получилось найти и достойного урока с объяснением, как на карте в приложении показать адрес. Поэтому я решил написать свой собственный урок и надеюсь, он будет вам полезен.

Предлагаю создать простое приложение, которое будет отображать введенный пользователем адрес непосредственно на карте. Назовем его “MapApp“.

1. Для начала создайте приложение типа “Window based” и присвойте проекту имя “MapApp“.
2. Добавьте к проекту фреймворк “MapKit“. (Удерживая нажатой клавишу , щелкните на папке “Frameworks” и выполните “Add -> Existing Frameworks“.)
3. Создайте новый класс контроллера представления и назовите его “MapViewController“. Добавьте текстовое поле, кнопку и представление карты. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
Комментариев: 3 »

Авг 17

Представленный в iPhone SDK фреймворк “AVFoundation” включает “AVAudioPlayer” — простое многофункциональное решение для воспроизведения аудиофайлов на базе Objective-C.

В этом уроке мы познакомимся с его работой, создав простое приложение, циклически воспроизводящее MP3 аудиофайл после запуска.

Источник/Github

Код к уроку можно получить на GitHub: клонируйте его из репозитория или загрузите zip-архив. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Комментариев: 6 »

Авг 12

В этом уроке мы рассмотрим основы считывания из буфера обмена и записи в него.

Основы

Множественные буферы обмена

В iPhone не один системный буфер обмена, а несколько: общесистемный, применяющийся при операциях копирования–вставки, и буфер поиска, хранящий последнюю поисковую строку.

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

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Авг 11

Приходилось ли вам задумываться над тем, как вводить данные пользователю, если текстовое поле расположено в нижней части представления? Появляющаяся при щелчке на текстовом поле клавиатура будет его скрывать. Решение очевидно — анимировать текстовое поле, сместив его вверх.

Объявите экземпляр “UITexField” и в редакторе Interface Builder установите его соответствие реальному текстовому полю (см. рис. ниже). Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Комментариев: 2 »

Июл 31

В этом простом уроке мы освоим доступ к фотобиблиотеке iPhone вместе с камерой. Рассматривать эти функции мы будем на примере SDK 3.0 и выше, поскольку с версии 3.0 методы выбора фотоснимков перешли в разряд устаревших (deprecated).

Мы создадим приложение для выбора фотографии из библиотеки или фотокамеры с последующим выводом на экран. Вот как это будет выглядеть на практике:

Что ж, приступим. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
1 Комментарий »

Июл 30

Сегодня мы рассмотрим небольшой проект с NSTimers, а именно — создание приложения, иллюстрирующего лошадиные бега. Нам предстоит создать представление с шестью небольшими синими квадратами “UIView“. Расположив их внизу экрана, мы с помощью таймера выведем один из квадратов вперед на произвольное расстояние. Приступаем!

Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (1 голосов, средний: 4.00 из 5)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 29

Я заметил, что многим играм в App Store не хватает анимации. Само собой, это не относится к компаниям формата Sega и PopCap, а как насчет независимых разработчиков?

Получится вот так!

Apple позаботилась о том, чтобы анимация никаких проблем не представляла, но, по-моему, рассмотренным здесь методом часто пренебрегают. В считанных строках кода я представлю вам полную анимацию изображений в игре на примере простого приложения. За основу мы возьмем анимацию наносящего удары персонажа Ryu.

1. Создание приложения на основе представления

Без комментариев…

2. Добавление изображений в папку “Resources”

Загрузив архив, распакуйте его и перетащите файлы в папку “Resources“. Обратите внимание: спрайт загружен с http://panelmonkey.org/. Файл включает 12 изображений Ryu из игры Street Fighter плюс фон из сцены Blanca для эффектности.

3. Создание фона

Потребности в данном шаге нет — он здесь просто для порядка.

Двойным щелчком на файле “whateveryoucalledyourapplicationViewController.xib” откройте его в редакторе Interface Builder. Поверните представление, щелкнув на кнопке со стрелкой.

Перетащите на экран “UIImageView” и растяните его по размерам экрана “iPhone“. В окне инспектора свойств выберите “sfst-blanka.jpg“. Проверьте, чтобы режим был установлен на “Center“, так как у изображения слишком низкое разрешение. Получившийся результат должен выглядеть примерно так (я добавил черный фон).

4. Создание анимации

Открыв файл “yourApplicationViewController.m“, добавьте к методу “viewDidLoad” приведенный ниже код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- (void)viewDidLoad {
[super viewDidLoad];
NSArray * imageArray  = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"1.png"],
[UIImage imageNamed:@"2.png"],
[UIImage imageNamed:@"3.png"],
[UIImage imageNamed:@"4.png"],
[UIImage imageNamed:@"5.png"],
[UIImage imageNamed:@"6.png"],
[UIImage imageNamed:@"7.png"],
[UIImage imageNamed:@"8.png"],
[UIImage imageNamed:@"9.png"],
[UIImage imageNamed:@"10.png"],
[UIImage imageNamed:@"11.png"],
[UIImage imageNamed:@"12.png"],
nil];
UIImageView * ryuJump = [[UIImageView alloc] initWithFrame:
CGRectMake(100, 125, 150, 130)];
ryuJump.animationImages = imageArray;
ryuJump.animationDuration = 1.1;
ryuJump.contentMode = UIViewContentModeBottomLeft;
[self.view addSubview:ryuJump];
[ryuJump startAnimating];
}

Для всех программистов 1337, которые опубликуют здесь комментарии с фразой “А почему бы для загрузки изображений не воспользоваться циклом?“, сразу отвечаю (изрядно занудным голосом): “Я делаю так, чтобы все было предельно ясно. Моя задача — показать, что массив нужно заполнить изображениями“.

Вот что, собственно, происходит в коде.

Сначала создаем массив из объектов “UIImage“. А затем начинается волшебство…. Apple предоставила в наше распоряжение свойство “UIImageView“, являющееся массивом изображений. Класс “UIImageView” располагает встроенной функцией, позволяющей циклически чередовать изображения с заданным временным интервалом (т.е. анимировать их).

Следующая переменная — длительность анимации, или количество секунд, за которые поочередно сменятся все изображения. По умолчанию это число изображений, умноженное на 1/30, т.е. скорость в 30 фреймов в сек. Поскольку у нас не 30 изображений, а только 12, с таким показателем анимация воина будет выглядеть весьма странно.

Установим по умолчанию 12 * (1/30) = 4, замедлив до 1.1. По окончании работы с анимацией можете поэкспериментировать с этим числом.

Очередная переменная — “contentMode“. Данный режим определяет, как именно изображение будет заполнять фрейм “UIImageView“. Поскольку изображения в анимации разного размера, мы откорректируем размеры фрейма под самое больше из них и установим “contentMode” на “UIViewContentModeBottomLeft“. Это означает, что прорисованное без масштабирования изображение будет помещено в левый нижний угол представления “UIImageView“. Чтобы понять, какой именно вариант будет верен для конкретного приложения, прочтите подробную информацию по режиму “contentMode“.

Последним шагом добавляем к основному представлению “UIImageView” и вызываем для него метод “startAnimating“, запуская анимацию для изображений. Есть и другие методы, которые могут оказаться весьма полезными при анимации, включая “stopAnimating” и “isAnimating“.

5. Убедитесь, что устройство запускается в альбомном режиме

Пример подразумевает работу устройства в альбомном режиме. О том, как это сделать, можно прочесть здесь. Необходимо внести в файл “info.plist” данные о начальном положении интерфейса, добавив соответствующий код в файл “viewController.m“.

1
2
3
4
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

Конец…

На этот раз по анимации все. Код к уроку можно загрузить здесь http://icodeblog.com/wp-content/uploads/2009/07/AnimationApp.zip. Удачи в программировании!

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Комментариев: 3 »