Невозможно добавить 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];