Cocos2D вызывает init объекта из init уровня сцены - PullRequest
0 голосов
/ 04 марта 2012

Привет, я сейчас работаю над игрой для iPhone, стратегической RPG сверху вниз (вроде Fire Emblem), у меня настроена мозаичная карта, и на экране установлен слой рисования и некоторые персонажи и враги, нарисованные на экране.и двигаться вокруг.Мой вопрос на самом деле просто, чтобы помочь мне понять, как я могу легко инициализировать своих персонажей.Моя инициализация персонажа проста, он просто загружает анимацию и устанавливает статистику следующим образом:

// Класс героя

-(id)init
{
    if(self = [super init])
    {
        characterClass = kHeroClass;

        [self initAnimations];

        [self declarePlayer:Hero withLevel:1 withStrength:15 withDefence:14 withMindpower:15 withSpeed:26 withAgility:26 withLuck:12 withEndurance:10 withIntelligence:15 withElement:kFire withStatus:kStatusNormal];
    }

    return self;
}

и так на игровой сцене, могу ли я просто быть похожим на:

(в файле .h)

PlayerCharacter *mainChar;
@property(retain)PlayerCharacter *mainChar;

(в файле .m)

-(id) init
{
    if((self=[super init]))
    {
        //the usual stuff
        mainChar = [MainCharacter init];

        return self;

    }
}

Однако я видел в Интернете и в учебных пособиях людей, использующих

MainCharacter *mainChar = [MainCharacter alloc];

будет ли это то же самое, что и

mainChar = [MainCharacter init];

, если не кто-то может помочь уточнить, какой синтаксис использовать.Большое спасибо: D Удачного дня!

1 Ответ

1 голос
/ 04 марта 2012

Я думаю, вам следует быстро прочитать некоторые вводные уроки. Этот классный и поможет вам привыкнуть к синтаксису и семантике Objective-C:

http://cocoadevcentral.com/d/learn_objectivec/

alloc выделит память для объекта, а init настроит все как обычный конструктор. Вы также увидите функции стиля initWith..., которые также можно использовать так:

MyObjectClass *instance = [[MyObjectClass alloc] init];

Затем его необходимо разблокировать в том же классе, в котором он был создан в методе dealloc.

Что касается настройки объектов, лучше не использовать действительно длинное имя метода declarePlayer:Hero withLevel..., а:

Настройте объект, а затем измените свойства:

Player *player = [[Player alloc] init];
player.health = 10;
player.armor = 20;
...

Как только вы ознакомитесь с Objective-C как языком, освоить cocos2d и любой другой код станет намного проще. Для этого вы можете посетить руководство по программированию и найти учебные материалы в Интернете, например, по адресу www.learn-cocos2d.com .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...