Почему я не могу использовать этот спрайт в Cocos2d / Objective c? - PullRequest
0 голосов
/ 21 ноября 2011

В моей игре в задаче c у меня есть два класса: основной ArcherClass и класс person. Вот часть .m человека класса.

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

    if (self) {
        _bow = [CCSprite spriteWithFile:@"bpw.png"];

    }
    return self;
}

Вот часть основного ArcherClass.m

  Player *object = nil;
        CCSprite *bow;

        bow = [object bow];

        //bow = [CCSprite spriteWithFile:@"bow.png"];
        [self addChild:bow z:1];

        bow.position = ccp(150,150);

Следующий код получает ошибку sigbart из-за закомментированной части. Если я удалю комментарий, код работает нормально.

Почему я не могу использовать файл изображения, объявленный в классе Person? Я уже объявил этот спрайт относительно значения этого изображения или чего-то еще, но по какой-то причине я должен повторно объявить изображение в моем основном классе? Это почему.

1 Ответ

1 голос
/ 21 ноября 2011

Если предположить, что упомянутые вами классы "персона" и классы "игрок" - это одно и то же, этот код:

Player *object = nil;         
CCSprite *bow;          
bow = [object bow];

собирается установить bow на nil. Вы не инициализировали object, поэтому любые вызванные методы вернут nil.

Где-то в вашем коде вам нужно следующее:

Player *object = [[Player alloc] init];

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

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