0

我有 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,所以我不知道出了什么问题。我确定我只是愚蠢,不知道如何编码并且缺少一些简单的东西。

4

1 回答 1

0
heart2 *heart;

您为您的班级命名Hearts2,因此请使用完全相同的名称,包括大写。

其次,您创建了一个变量,但这将为零。如果您不使用 ARC(您应该这样做),这将创建一个未初始化的对象。

这将创建 的实例Hearts2,将其分配给本地 varheart并将其添加为子项:

Hearts2 *heart = [Hearts2 node];
[self addChild:heart z:2];
于 2014-02-17T21:17:29.293 回答