Невозможно добавить CCNode в сцену

У меня есть IntroScene, и я хочу добавить узел, но, похоже, он не работает. Вот два разных способа, которыми я пытался это сделать, и ОБА не удалось.

Первый способ не удался:

в hearts2.h

#import <Foundation/Foundation.h>
#import "cocos2d.h"

@interface Hearts2 : CCNode {

}

@end

в hearts2.m

#import "Hearts2.h"


@implementation Hearts2

@end

в IntroLayer.m

- (id)init
{
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return(nil);

heart2 *heart;
[self addChild:heart z:2];

// done
return self;
}

Я не ожидал, что это сработает (на самом деле я был в отчаянии и попробовал это так, как второй способ просто посмотреть, сработает ли это). Фактическая первая попытка, которую я попытался сделать, была такой, и она также не удалась:

в hearts1.h

#import <Foundation/Foundation.h>
#import "cocos2d.h"

@interface Hearts1 : CCNode

+ (Hearts1 *)node;
- (id)init;
-(void)selfAnimate;



@end

в hearts1.m

#import "Hearts1.h"

@implementation Hearts1 {
}

+ (Hearts1 *)node
{
    return [[self alloc] init];
}

- (id)init
{
    self = [super init];
    if (!self) return(nil);


    return self;

}
- (void)dealloc
{
}

- (void)onEnter
{
    [super onEnter];

}

- (void)onExit
{
    // always call super onExit last
    [super onExit];
}



- (void)selfAnimate
{
}
@end

в IntroLayer.m

- (id)init
{
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return(nil);

heart1 *heart;
[self addChild:heart z:2];

// done
return self;
}

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

1 ответ

Решение
heart2 *heart;

Вы назвали свой класс Hearts2 поэтому используйте точно такое же имя, включая заглавные.

Во-вторых, вы создали переменную, но это будет ноль. Если вы не используете ARC (что необходимо), это создаст неинициализированный объект.

Это создаст экземпляр Hearts2, назначьте его локальному var heart и добавьте это как ребенок:

Hearts2 *heart = [Hearts2 node];
[self addChild:heart z:2];
Другие вопросы по тегам