среда, 27 июня 2012 г.

Cocos2d-iPhone: Привет, Мир!

Cocos2d - фреймворк для создание 2д игр, изначально Cocos2d был написан на Python, но так как он приобрел большую популярность, своею открытостью, его портировали на другие платформы.

Cocos2d-iPhone был написан на Objective-C, работает на iOS системах, то есть, на данный момент это iPhone, iPod, iPad.

Требование

Все что вам нужно:
  • Mac с Mac OS X свыше версии чем 10.4
  • Базовые знание Objective-C
  • Установленный Xcode 3,4 с iOS SDK
Давайте, начнем!

Cocos2d-iPhone

Заходим на сайт, кликаем на таб с надписью "download", скачать надо стабильную версию 1.0.1.
Разархивируйте архив в любую папку например в "Загрузки".

Обязательно нужно установить шаблоны для Cocos2d, что б установить нужно запустить файл install-templates.sh .

Устанавливаем через Терминал, нужно ввести в Терминале путь install-templates.sh с флагом -u.
Вот пример:

/Users/evgeny/Downloads/cocos2d-iphone-1.0.1/install-templates.sh -u
Таким образом вы установите Cocos2d.

Hello World

Теперь займемся самим Кокосом.
Запускате Xcode


Нажмите на кнопку "Create a new Xcode Project" в сайд-баре должна был появится вкладка cocos2d под  iOS.

Создайте новый cocos2d проект.

В поле "Product Name" введите на английском название приложение, я напишу "HelloWorld".
Когда проект загрузится, вы можете запустить приложение на симуляторе.

По идее вы должны получить вот такое:


Давайте разберем код, все что на нужно, это

  • HelloWorldLayer.h .m
  • AppDelegate.m

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
 // Создание Окна
 window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 
 // Использование CADisplayLink в директоре
 // Если без успешно (SDK < 3.1) использовать Таймер
 if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
  [CCDirector setDirectorType:kCCDirectorTypeDefault];
 
 
 CCDirector *director = [CCDirector sharedDirector];
 
 // Создание Главного Представления
 viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
 viewController.wantsFullScreenLayout = YES;
 
 //
 // Загрузка EAGLView
 //  1. Создание RGB565 формата. Альтернатива: RGBA8
 // 2. глубина формата 0 бита. Используйте 16 или 24 битов для 3d эффектов, как CCPageTurnTransition
 //
 //
 EAGLView *glView = [EAGLView viewWithFrame:[window bounds]
           pixelFormat:kEAGLColorFormatRGB565 // kEAGLColorFormatRGBA8
           depthFormat:0      // GL_DEPTH_COMPONENT16_OES
      ];
 
 // Прикрепить openglView к директору
 [director setOpenGLView:glView];
 
// // Разрешить высокое разрешение (Retina дисплей) на iPhone 4 и поддержка низкое разрешение на всех старых устройств
// if( ! [director enableRetinaDisplay:YES] )
//  CCLOG(@"Retina Display Not supported");
 
 //
 // Очень Важно:
 // Если повороты будут контролироватся под руководством UIViewController
 // Тогда ориентация устройства должен быть "Портретном".
 //
 // Важно:
 // По умолчание, этот шаблон только поддерживает в Горизонтальном положение.
 // Отредактируй RootViewController.m что б изменить Ориентацию.
 //
#if GAME_AUTOROTATION == kGameAutorotationUIViewController
 [director setDeviceOrientation:kCCDeviceOrientationPortrait];
#else
 [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];
#endif
 
 [director setAnimationInterval:1.0/60];
 [director setDisplayFPS:YES];
 
 
 // Назначить OpenGLView дочерним классом контролера представления
 [viewController setView:glView];
 
 // Назначить ViewController дочерним классом окна
 [window addSubview: viewController.view];
 
 [window makeKeyAndVisible];
 
 // По умолчанию поддерживаются PNG/BMP/TIFF/JPEG/GIF изображения
 // Они могут быть RGBA8888, RGBA4444, RGB5_A1, RGB565
 // Вы можете изменить в любое время.
 [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
 
 // Загрузить HelloWorldLayer 
 [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];
}
Дальше:
#import "cocos2d.h"
// .h


// Интерфейс HelloWorldLayer
@interface HelloWorldLayer : CCLayer
{
}

// Создание сцены для Директоры
+(CCScene *) scene;

@end

// .m

// Импорт Интерфейса
#import "HelloWorldLayer.h"

// Реализация HelloWorldLayer
@implementation HelloWorldLayer

+(CCScene *) scene
{
 // 'scene' авто освобождающийся объект.
 CCScene *scene = [CCScene node];
 
 // 'layer' авто освобождающийся объект.
 HelloWorldLayer *layer = [HelloWorldLayer node];
 
 // Добавляем 'layer' (слой) к сцене как дочерний элемент
 [scene addChild: layer];
 
 // Возвращаем объект сцены
 return scene;
}

// на "init" вам нужно инициировать экземпляры
-(id) init
{
 // всегда на init вызывайте "super"
 if( (self=[super init])) {
  
  // создаем и инициируем надпись
  CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64];

  // запрашиваем у директора, размер окна
  CGSize size = [[CCDirector sharedDirector] winSize];
 
  // ставим надпись в центр 
  label.position =  ccp( size.width /2 , size.height/2 );
  
  // добавляем надпись в наш 'layer' (слой)
  [self addChild: label];
 }
 return self;
}

// на "dealloc" вам нужно удалить из памяти объекты (кроме autorealese объектов)
- (void) dealloc
{
 // в случае если нужно удалить что-нибудь из памяти, удаляйте в этом методе
 // в этом примере никого не требуется удалять.
 // cocos2d автоматически удалит дочерние элементы (Надпись)
 
 // не забудьте вызвать "super dealloc"
 [super dealloc];
}
@end



В принципе все.

Комментариев нет:

Отправить комментарий