В этом уроке речь пойдет о создании приложения Hello World для cocos2d. Тем, кто еще не выполнил установку и компиляцию cocos2d, стоит прочесть предыдущий урок.
Шаг 1
Командой “File->New Project” создайте новый проект.
Шаг 2
Выберите опцию “Window-Based Application“. Продолжить чтение »
Cocos2d — набор средств разработки, ориентированный преимущественно на создание игр на iPhone и iTouch. Изначально данный SDK создавался для языка Phyton (лицензия GNU LGPL).
Где загрузить
ЗДЕСЬ!
Требования
- Mac и Mac OS с поддержкой iPhone SDK (например, Mac OS 10.5.6)
- Xcode v. 3 и выше
- iPhone SDK
Подробнее об установке Xcode и iPhone SDK, а также о том, где их взять, можно прочесть здесь.
Установка
1. Загружаем отсюда.
2. Распаковываем архив и копируем файлы в папку “Library” (может быть и любая другая, но я выбрал “Library“). Продолжить чтение »
В этом примере мы создадим скачущий мяч, используя средства Cocos2d по сценарийной анимации. Урок предполагает знакомство с основами настройки проектов в cocos2d (при необходимости рекомендуем обратиться к предыдущим урокам, раз, два). Представленный проект основан на примере с именем “Click And Move“, входящем в состав пакета cocos2d.
Шаг 1
Выполните “File->New Project“, выбрав “Window-Based Application“. Присвойте проекту имя “BouncingCocos“.
Шаг 2
Выберите изображение для скачущего мяча и добавьте его в группу “Resources“. Свой мяч я загрузил отсюда.

Шаг 3
Добавьте в проект файлы Cocos2d (или сошлитесь на библиотеку, если таковая создана). Для добавления файлов щелкните на имени проекта в списке “Group & Files“, удерживая нажатой клавишу <Control>, и включите имеющиеся файлы из дистрибутива Cocos2d. Продолжить чтение »
При работе с синглетоном Director на Cocos2d программа не реагирует на события касания при наличии в окне объекта “Scene“. Соответственно, реализация “UIApplicationDelegate” не получает уведомления “touchesBegan“.
Исправить эту особенность можно следующим образом:
1) внедрив протокол “TouchEventsDelegate” со следующей спецификацией:
1 2 3 4 5 6 7 8 9 10 11
| /**Touch event delegate
* return YES if the event was handled
* return NO if the event was not handled
*/
@protocol TouchEventsDelegate
@optional
- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (BOOL)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
@end |
2) связав с синглетоном обработчик событий:
1
| [[Director sharedDirector] addEventHandler:(id)touchEventDelegateHandler]; |
Продолжить чтение »
Данный урок подразумевает знакомство с Cocos2d для iPhone (здесь мы будем работать с Cocos2d v. 0.7.1). Для базовой информации по Cocos2d можно прочесть инструкцию по установке здесь и урок Hello World.
Введение
К переходам, которые используются для переключения между объектами Cocos2d Scene, относятся такие эффекты, как wipe (вытеснение), fade (постепенное появление / исчезновение), zoom (масштабирование) и split (разделение). Класс “Scene” — производная “CocosNode“, по свойствам аналогичная “Layer“. В любой объект “Scene” можно добавить еще один “CocosNode“, например, “Layer” (один или несколько) или “Sprite” (один или несколько). Для обработки перехода служит представленный ниже код:
1
| +(id) transitionWithDuration:(ccTime) t scene:(Scene*)s; |
где “scene” — сцена, которая, появляясь, сменяет текущую, “time” — число секунд, которые длится переход. При применении перехода к сценам синтаксис будет следующим:
1
| [[Director sharedDirector] replaceScene: [TransitionClass transitionWithDuration:duration scene:nextScene]]; |
Встречаются переходы со специализированными параметрами. Так, например, в “FadeTransition” в качестве дополнительного параметра присутствует цвет. Продолжить чтение »
Мы уже останавливались на воспроизведении коротких звуков в игре/приложении. Теперь пришло время фоновой музыки. iPod допускает воспроизведение одного типа коротких звуков, а вот добавление фоновой музыки его отключает.
Для проигрывания фоновой музыки (т.е. звуков, не ограниченных по длительности 30 с) можно воспользоваться AVAudioPlayer. Нужный код приведен ниже (не забудьте добавить фреймворк “AVFoundation.framework“).
1 2
| AVAudioPlayer *myAVsound = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"backgroundMusic" ofType:@"caf"] ] error:NULL];
[myAVsound play]; |
Задача данного кода сводится к воспроизведению фоновой музыки [backgroundMusic.caf], но только один раз. Проделать это неоднократно поможет “NSTimer“: вызывайте [myAVsound play]. Продолжить чтение »
В продолжение темы, рассмотренной в частях 1 и 2, мы будем и дальше работать с созданным ранее проектом, но на этот раз освоим воспроизведение базовых звуков. Для загрузки и озвучки воспользуемся одним из примеров Apple, который можно найти в Apple Developer Network под именем BubbleLevel (к сожалению, прямой ссылки нет, поскольку нужно входить под собственным логином).
Шаг 1
Итак, нам предстоит добавить к проекту аудиофайлы. iPhone дружит с форматом CAF. Использовать его не обязательно, но если решите, о создании и преобразовании CAF-файлов можно прочесть здесь (на английском языке) http://permadi.com/blog/?p=927. В нашем примере я будут работать с одним CAF-файлом и с одним MP3.
Импортируйте оба файла в группу “Resources” точно так же, как это делали это с изображениями (удерживая нажатой клавишу <Ctrl>, щелкните на пиктограмме “Resources” и выберите “Add Existing Files“). Продолжить чтение »
Объект “UIActivityIndicator“, чаще всего именуемый просто счетчиком, как правило, сообщает пользователю о прогрессе какой-либо операции.
Счетчики “UIActivityIndicator” бывают трех типов: (слева направо) серый “UIActivityIndicatorViewStyleGray“, белый “UIActivityIndicatorViewStyleWhite“, большой белый “UIActivityIndicatorViewStyleWhiteLarge“.
Задействовать любой из них поможет приведенный ниже код:
1 2 3
| UIActivityIndicatorView *myIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]];
myIndicator.center = CGPointMake(160, 240);
myIndicator.hidesWhenStopped = NO; |
Как видим, в “initWithFrame” потребности нет, если по размеру большой белый счетчик отличается от малого белого и серого. Вместо этого задается его центральная точка.
Для добавления “UIActivityIndicator” в представление достаточно метода “addSubview“. Продолжить чтение »
iPhone / iPod touch позволяет создавать “скриншоты”, сохраняя как изображение содержимое экрана. Многие пользователи даже не догадываются, но для этого достаточно одновременно нажать кнопки home и power. При работе с каталогом Camera Roll или сихронизации фотографий с компьютером каждый скриншот представляет собой изображение 320×480 пикселей.
В этом уроке я расскажу, как с помощью Quartz получать снимки экрана произвольного размера. Под произвольным размером подразумевается возможность сохранять не только часть экрана, но и представление целиком (а не только видимую часть), даже если его размеры превышают 320×480 пикселей.
Для начала к проекту нужно будет добавить фреймворк QuartzCore. Все фреймворки можно найти по следующей ссылке:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ iPhoneOSxxx.sdk/System/Library/Frameworks
Выделенная полужирным часть для каждого пользователя будет разной (в моем случае это iPhoneOS2.2.sdk). Кстати, попасть в папку “Frameworks” можно гораздо проще. Продолжить чтение »
В этом уроке мы продолжим (первая часть) работу над простейшей игрой типа “космические пришельцы”. Нам предстоит внести в неё значительные изменения, о смысле которых чуть ниже.
Первым делом нужно реструктуризировать CSS код так, чтобы основная часть относящихся к игре объектов размещалась внутри элемента “div“. Так будет проще добавлять игровые элменты — внося их в контейнер “div” посредством “addChild“.
Отредактируйте “index.html” так, как показано ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>GameShip</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.6">
<meta name="apple-mobile-web-app-capable" content="YES">
<link rel="apple-touch-icon" href="Images/WebClipIcon.png">
<link rel="stylesheet" href="main.css">
<script type="text/javascript" src="Parts/utilities.js" charset="utf-8"></script>
<script type="text/javascript" src="Parts/setup.js" charset="utf-8"></script>
<script type="text/javascript" src="main.js" charset="utf-8"></script>
<script type="text/javascript" src="Parts/Text.js" charset="utf-8"></script>
</head>
<body onload="load();">
<div id="content">
<div id="background" class="background"
ontouchmove="onTouchMoveHandler(event)" ontouchstart="onTouchStartHandler(event)"
onmousemove="onMouseMoveHandler(event)">
<div id="playerShip" class="playerShip"
ontouchmove="onTouchMoveHandler(event)" ontouchstart="onTouchStartHandler(event)"
onmousemove="onMouseMoveHandler(event)">
</div>
</div>
</div>
</body>
</html> |
Продолжить чтение »
|
Последние комментарии
Подскажите пожалуйста… Вот...
Код не открывает страницы по простой причине -...
можно было бы использовать сглаживание MSAA, графика была бы на...